如何解决WinForm中控件闪烁的问题?

tlowl 2006-10-31 02:16:02
客户嫌我们的系统在页面切换时控件闪得厉害,我们控件是放在top、fill、bottom三个panel上,现在在改panel已经来不及了,各位大虾有没有什么好办法能解决这个问题
...全文
697 13 打赏 收藏 举报
写回复
13 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
ilove8 2006-11-06
  • 打赏
  • 举报
回复
double buffer
cansum396 2006-11-06
  • 打赏
  • 举报
回复
private void Frm_Load(object sender, System.EventArgs e)
{
this.SuspendLayout();
....
this.ResumeLayout(false);
}
tlowl 2006-11-01
  • 打赏
  • 举报
回复
是不是C#做Form本身就慢?Java做Form也没有这么闪
灰太狼 2006-11-01
  • 打赏
  • 举报
回复
讓客戶換好機子。
maotroy 2006-10-31
  • 打赏
  • 举报
回复
datagrid,如果设置了dock属性后,窗体切换会很奇怪的问题,特别是多个mdi子窗体的那种情况

可以考虑在失去焦点和获得焦点时,改变dock属性,当然还需要在改变时根据实际大小来调整宽与高
huing 2006-10-31
  • 打赏
  • 举报
回复
双缓存不行?
jijl2001 2006-10-31
  • 打赏
  • 举报
回复
你在页面切换的时候锁定窗体,等更新完毕后显示
[System.Runtime.InteropServices.DllImport("user32.dll", EntryPoint = "LockWindowUpdate")]
public static extern int LockWindowUpdate(IntPtr hwndLock);

调用
LockWindowUpdate(tabControlPanel2.Handle);

LockWindowUpdate((IntPtr)0);
tlowl 2006-10-31
  • 打赏
  • 举报
回复
DoubleBuffered置为ture也不好用,客户要求dataGrid必须充满中间的panel,看来只能手动设置panel的大小了。上MSDN查了一下,看来这是微软Form的普遍问题,这点微软做得不太好
GXY2005 2006-10-31
  • 打赏
  • 举报
回复
1.開啟雙緩沖DoubleBuffered
2.數據刷新采用梆定數據源
3.修改顏色,不要差別太大
路人霆 2006-10-31
  • 打赏
  • 举报
回复
将其DoubleBuffered置为ture试试。
maotroy 2006-10-31
  • 打赏
  • 举报
回复
突然想到,可能是dock属性造成的
或者你使用了datarid,并且设置了dock属性?
everyltt 2006-10-31
  • 打赏
  • 举报
回复
不太明白你的意思,用TabControl试试?把控件放在每个TabPage上面?
maotroy 2006-10-31
  • 打赏
  • 举报
回复
修改背景色也许可以应急
发帖
C#

10.8w+

社区成员

.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
帖子事件
创建了帖子
2006-10-31 02:16
社区公告

让您成为最强悍的C#开发者