【发布时间】:2015-02-24 07:10:44
【问题描述】:
我编写了以下代码来重用已处理的表单。但这是硬编码的,仅限于一种形式。我想用它来检查并打开我的应用程序中的所有表单。
private void CheckMdiChildren(Form frm)
{
if (frm.IsDisposed)
{
frm = new MembersList();
frm.Show();
}
else
{
foreach (Form f in this.MdiChildren)
{
if (f.GetType() == frm.GetType())
{
f.Focus();
return;
}
}
frm.MdiParent = this;
frm.Dock = DockStyle.Fill;
frm.Show();
}
}
我正在传递参数frm,它是不同形式的对象,例如。
this.CheckMdiChildren(mbl);
和
this.CheckMdiChildren(exc);
但上面的代码总是打开 MembersList 表单。
我已经为 MainForm 全局声明了以下表单
ExerciseChart exc = new ExerciseChart();
MembersList mbl = new MembersList();
当我在本地使用上述声明时,它工作正常。
有什么方法可以让我在多种表单中使用这个功能??
感谢您的快速帮助,请随时询问更多详细信息或代码!
【问题讨论】:
-
尝试更改您的 CheckMdiChildren() 方法以在参数和对该方法的所有调用中使用“ref”。
-
很遗憾,这个问题还不够清楚。您提供的代码似乎暗示您的
this表单是容器,您正在尝试“检查”子表单。是否只允许每种类型的子表格中的一种?调用站点的上下文是什么?mbl和exc变量是如何声明的?作为此操作的一部分,您是否还想更新它们的值?太多细节被遗漏了,不知道什么是好的答案。