DockPanelSuite 是 Winform 中优秀的布局控件,但是这次使用过程中却出了个问题。

我遇到的问题是这样的,主窗体是通过 ShowDialog 显示的,子窗体的停靠状态为 DockState.Document,主窗体关闭时,并未真正 Close,仅是 Hide

然后问题来了

问题1:在主窗体 Load 事件中直接 Show 子窗体,关闭主窗体后再次打开,报错 创建窗口句柄时出错。

这个问题临时处理,改为不在 Load 事件中默认打开子窗体。

问题2:打开子窗体后关闭主窗体,再次打开主窗体(注意:子窗体并未关闭),这时候,子窗体内的所有控件不显示。这个问题困扰了我很久,一直找不到解决方案,后来再跟同事说起这个 bug 的时候忽然就想到了。

首先,子窗体中控件不显示,但是关闭子窗体后再打开,控件是正常显示的。于是我就想到,是不是要在主窗体显示完毕后再打开子窗体,就不会有这个问题了呢?

我先将显示子窗体的方法,从 Load 事件中移动到 Shown 事件中,结果第一个问题解决了,第二个问题依然存在。

然后我想到的是,在关闭主窗体时,移除子窗体。因为主窗体显示后,点击按钮打开子窗体,是没有问题的,那么我就想模拟出这个流程。结果,失败了。问题依旧存在。

我确定,只有在 State = DockState.Document 时才会有这个 bug,我就在关闭主窗体时,将子窗体的 State 属性改成了 DockState.DockLeft,事实证明有效果,子窗体控件显示正常,虽然布局有点问题,但最主要的问题解决了,一切就好办了。最后,我在主窗体关闭时,将子窗体的 State 设成了 DockState.Hidden。至此 BUG 完美解决。

最新文章

  1. 转:C# 中 MSCHART 饼状图显示百分比
  2. wamp链接mysql数据库
  3. CentOS7安装mysql数据库
  4. Classpath entry org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER will not be exported
  5. 域名地址默认跳转到www(301重定向)
  6. mockito中两种部分mock的实现,spy、callRealMethod
  7. 如何快速正确的安装 Ruby, Rails 运行环境
  8. HTML之禁止输入文本
  9. [编织消息框架][JAVA核心技术]动态代理应用12-总结
  10. jquery遍历----end()方法
  11. Alpha阶段项目复审(冲鸭队)
  12. 解决在使用pip list时出现DEPRECATION
  13. 【Tomcat】面向初级 Web 开发人员的 Tomcat
  14. linux 定时任务 日志记录
  15. Android开发之Activity(cho1)篇
  16. MVC初级教程(三)
  17. 圆锥体完全均衡下重力异常正演 [MATLAB]
  18. vim自定义配置之代码折叠
  19. 2019年1月23日,好像是这个日子,RF发布了 1.7.3.1 支持python3.6以上了,安装成功。
  20. Python3 小工具-UDP扫描

热门文章

  1. 冷门的HTML - tabindex 的作用
  2. 原生javascript包装一个ajax方法
  3. Markdown的应知应会
  4. Java蓝桥杯——贪心算法
  5. mq存储文件
  6. linux上的PXE装机服务的搭建
  7. 下载配置VNC
  8. CentOS下搭建文件共享服务
  9. web自动化-绕过登录
  10. odoo13之右上角弹出提示框