牛翔没人爱 2022-07-07 08:47 采纳率: 66.7%
浏览 16
已结题

winform前台显示特定控件 CPU偏高并伴随闪烁

用.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%以上,其他消息没有。
现在怀疑是绘制界面的问题,谁能提供些有价值的参考?

  • 写回答

2条回答 默认 最新

  • 牛翔没人爱 2022-07-07 18:08
    关注

    经过复杂的排查,终于找到了根源!问题出在对combobox的封装上,封装控件引用继承的基类里面对控件进行重绘,该基类貌似只对textbox有效,其他基础控件会导致formerrorhandle,当出现这个错误时,系统会发送一个界面错误的消息泵,所有的form组件在接收到这个消息后,都会进行重绘,导致了后面的闪烁。本想偷个懒引用开源的控件代码,结果给自己埋了个大坑

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 7月15日
  • 已采纳回答 7月7日
  • 创建了问题 7月7日

悬赏问题

  • ¥15 如何在scanpy上做差异基因和通路富集?
  • ¥20 关于#硬件工程#的问题,请各位专家解答!
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 報錯:Person is not mapped,如何解決?
  • ¥15 c++头文件不能识别CDialog