• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

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

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

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


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap