DockPanel的一个异常BUG【DockPanel Suite2.4 存在BUG】
补充:从发现下文描述的异常之后,在使用时发现,当一个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(true, true);
}
{
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(true, true);
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架