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