首页新闻找找看学习计划

如何解决WinForm窗体不是卡顿就是闪烁的问题

0
悬赏园豆:40 [已关闭问题] 关闭于 2017-12-20 17:05

项目是这样设计的,一个BaseForm的基类保存全局静态对象(不知道这个有没有影响)。

子窗体使用MDI的方式显示,会使用到Panel容器和DataGridView做列表。

问题是子窗体显示的时候会闪烁,有明显的绘制过程,而且拖动会闪烁。找了网上的一些解决方案,不闪了,只是会很卡,在拖动子窗体时会有0.5秒左右的停滞感。

子窗体除了基本的响应事件还有一个SizeChanged调节窗体元素位置的事件

解决闪烁的代码是

protected override CreateParams CreateParams
        {
            get
            {
                CreateParams cp = base.CreateParams;
                cp.ExStyle |= 0x02000000;  // Turn on WS_EX_COMPOSITED
                return cp;
            }
        }

 


之前一直做web,WinForm不大会,这个如何解决呢?

anywls的主页 anywls | 初学一级 | 园豆:2
提问于:2016-04-27 11:29
< >
分享
所有回答(4)
0

别用sizechange事件改变布局,使用duck和锚定来实现动态布局

刘宏玺 | 园豆:14004 (专家六级) | 2016-04-27 12:14
1

确实可以看出来是WINFORM不大会了。

做WEB的人做WINFORM一个麻烦就是老觉得界面不好看,然后就作死想自己渲染,然后结果你也知道了。

 

如果只是布局的话,其实WINFORM已经做得很好了(比IOS的鸟布局好一万倍)

有Anchor, Dock, 有Panel, Tablelayout,基本都能自动调整布局的。

 

真想漂亮一点,找个第三方组件,比如Devexpress, Telerik, ComponentOne,不要听人说啥慢,反正比你写得好多了。

爱编程的大叔 | 园豆:30271 (高人七级) | 2016-04-27 12:24
0

我可以解决, 但是需要付费

无记 | 园豆:309 (菜鸟二级) | 2016-05-06 11:31
0

如果做商品化软件,先把功能实现后,尽可能考虑把界面做的靓丽些,即使付费买第三方软件也是值得的,如果是定制开发的软件,还是把主要精力放在功能的完善上。

文韬武略 | 园豆:206 (菜鸟二级) | 2017-04-14 09:28
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册