我想知道如何关闭当前处于焦点的窗体或包含控件的窗体。例如,我有一个导入的标题和一个菜单,我将其导入应用程序中的所有窗体。
这是我的Header类中的(简化)代码:
public static Panel GetHeader()
{
...
menuItem.Text = "Menu Item";
menuItem.Name = "Next form to open";
menuItem.Click += toolStrip_Click;
...
}
public static void toolStrip_Click(object sender, EventArgs e)
{
ToolStripMenuItem menuItem = sender as ToolStripMenuItem;
NavigationClass.SaveNextForm(menuItem.Name);
}
导航类只是我制作的,它将选择要打开的下一个窗体,但是我找不到任何东西可以关闭当前窗体(因为没有将Close()作为选项,因为它是通过Controls导入的。添加(HeaderClass.GetHeader))
修改
只需说明一下,此表单位于另一个文件中,该文件只是普通的类文件。那就是困难所在,因为我正努力避免严重违反DRY原则
答案 0 :(得分:0)
请勿使用@Hans Passant建议的静态处理程序。那很重要。
尝试将主表单作为参数发送到您的类,并将其存储在该类中。可以在实例化类时或之后进行此操作。然后,当您需要关闭表单时,调用它的Close
方法。由于您没有包含代码的更多详细信息,因此这是我的示例,其中包含一些假设。
public class MainForm : Form
{
private HeaderClass HeaderClass;
public MainForm()
{
HeaderClass = new HeaderClass(this);
}
}
public class HeaderClass
{
private MainForm MainForm;
public HeaderClass(MainForm mainForm)
{
MainForm = mainForm;
}
public void MethodThatYouNeedToCloseTheFormFrom()
{
...
MainForm.Close();
...
}
}
如果您需要更多说明,请告诉我们。