DockPanel的一个异常BUG【DockPanel Suite2.4 存在BUG】

 


以下讨论是针对 DockPanel Suite 开源组件的DockPanel类
 

 

 

 

补充:从发现下文描述的异常之后,在使用时发现,当一个DockContent窗体添加到DockPanel中,先打开,再关闭 然后改变主窗体大小时,会使其他未关闭的DockContent窗口消失,不暴任何异常,

非常诡异的一个错误,出现在DockPanel SUite 2.4中, 改用2.3后没有发现本文描述的任何问题!

 

 

 

异常产生场景描述如下:

 

DockPanel中添加一个 DockContent窗体,窗体的HideOnClose属性设置为true

 

当反复点击DockContent窗体的关闭按钮时触发异常;

 

异常代码位于DockPanel代码第498行

 

NestedDockingStatus.NestedPanes.Remove(this);

 

 

 多次点击DockContent关闭按钮时,此处NestedPanes会产生为NULL的异常

 

 修改方法为添加一个判断,如下完整函数:

复制代码
internal void CloseContent(IDockContent content)
        {
            DockPanel dockPanel = DockPanel;
            dockPanel.SuspendLayout(true);

            
if (content == null)
                
return;

            
if (!content.DockHandler.CloseButton)
                
return;

            
if (content.DockHandler.HideOnClose)
            {
                content.DockHandler.Hide();
                
if (NestedDockingStatus.NestedPanes!=null)                //修改位置
                   NestedDockingStatus.NestedPanes.Remove(this);
            }
            
else
                content.DockHandler.Close();

            dockPanel.ResumeLayout(truetrue);
        }
复制代码

 

 

 

posted @   lianghugg  阅读(856)  评论(0编辑  收藏  举报
编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架
点击右上角即可分享
微信分享提示