【发布时间】:2013-12-22 04:40:07
【问题描述】:
好的,我正在构建一个表单,它将通过使用自定义控件来更改其界面。我要做的是在创建新控件之前进行几次检查,例如检查是否已经启动。我的一切工作正常,但我似乎无法动态创建新控件,而不是在运行失败的检查之前创建它。
这些控件都实现了一个名为 ICustomControl 的接口并从 MasterControl 继承。然后我有一个名为 JobForm 的自定义控件,以及一个调用该方法的主窗体上的按钮,如下所示:Check_Controls(newJobForm)
JobForm newJobForm;
private void Check_Controls(Control control) // Checks current controls to see if a new one can be opened
{
bool currentControl = false;
foreach (Control c in this.Controls)
{
if (c is ICustomControl && c != masterControl)
currentControl = true;
}
if (currentControl)
{
TimedMessageBox timedMessage = new TimedMessageBox("There is currently an open form. Please close the current control before opening another.");
timedMessage.ShowDialog();
}
else
{
Control c = (Control)Activator.CreateInstance(control.GetType());
this.Controls.Add(c);
Position_Control(c);
c.Show();
}
}
我不想在运行 check 方法之前创建自定义控件的新实例,例如:JobForm newJobForm = new JobForm();,我想将引用传递给 check 方法,然后让它在检查后创建新实例完全的。这样,无论我最终向应用程序添加了多少新的自定义控件,我所要做的就是创建引用变量,然后为按钮调用检查方法并将引用传递给它。
有人知道我该怎么做吗?
【问题讨论】: