我正在使用 Dockpanel-suite,我基本上打开了 3 个表单。其中之一是“文档”表单,它可以打开多个文档,而其他两个表单是单个实例。
在某个阶段,我想找到并关闭一些文档表单。现在根据dockpanel-suite的文档它指出
从 DockPanel 中删除 DockContent 要从 DockPanel 中释放 DockContent,只需将 DockContent.DockHandler.DockPanel 设置为 null。
但是 DockHandler 是只读的,所以我不能将它设置为 null 那么如何找到我需要的文档并对它们执行操作,例如关闭它们?
目前我正在这样做;
foreach (DockContent dock in this.dockPanel1.Documents)
{
if (dock.GetType() == typeof(FormQueryBuilder))
{
FormQueryBuilder qb = (FormQueryBuilder)dock;
string number = qb.TabText.Replace("Query ", ""); //close all documents except those which start "Query 1"
if (Convert.ToInt32(number) > 1)
{
dock.Close();
}
}
}
奇怪的是,如果我调用 dock.Close() 这将关闭文档,但如果在我的主(包含)表单的“FormClosing”事件期间调用它,那么它会停止关闭我的表单。似乎设置了一些值来取消它!