关闭当前关注的表格

时间:2018-11-27 07:39:14

标签: c# winforms

我想知道如何关闭当前处于焦点的窗体或包含控件的窗体。例如,我有一个导入的标题和一个菜单,我将其导入应用程序中的所有窗体。

这是我的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原则

1 个答案:

答案 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();
        ...
    }
}

如果您需要更多说明,请告诉我们。