前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【C#】DockPanelSuite 中 DockState.Document 状态下子窗体控件不显示的解决方案

【C#】DockPanelSuite 中 DockState.Document 状态下子窗体控件不显示的解决方案

作者头像
丹枫无迹
发布2020-12-18 11:26:17
1.3K0
发布2020-12-18 11:26:17
举报
文章被收录于专栏:学无止境

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 完美解决。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020-12-16 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档