用.net framework 4.6开发了个winform程序。现在遇到一个很操蛋的问题,实在是没有办法了,希望有缘人能帮忙解答。
程序采用Mdiparent容器,从数据库动态加载配置并生成界面Form1,form1里一个treeviewex(自定义封装的treeview),一个flowlayout1
。flowlayout1里面动态加载用户控件。用户控件通过枚举参数显示textbox,combobox,picturebox等基础样式。
问题出在用户控件上,用户控件里存放combobox进行显示时,CPU大增(0增大到30%)并一直持续,且在低配电脑上会导致整个form1闪烁。一旦这个带combobox的控件不显示,CPU立马降到0。
诡异的是,当我把整个程序界面最小化之后,CPU也会降到0,一旦向屏幕呈现就会飙升。
通过性能探查器只提示application.run(Mdiparent1)计数占96%以上,其他消息没有。
现在怀疑是绘制界面的问题,谁能提供些有价值的参考?

winform前台显示特定控件 CPU偏高并伴随闪烁
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-
2条回答 默认 最新
- 牛翔没人爱 2022-07-07 18:08关注
经过复杂的排查,终于找到了根源!问题出在对combobox的封装上,封装控件引用继承的基类里面对控件进行重绘,该基类貌似只对textbox有效,其他基础控件会导致formerrorhandle,当出现这个错误时,系统会发送一个界面错误的消息泵,所有的form组件在接收到这个消息后,都会进行重绘,导致了后面的闪烁。本想偷个懒引用开源的控件代码,结果给自己埋了个大坑
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报