从其他表单关闭Wpf表单

时间:2012-03-05 16:37:16

标签: c# wpf

大家好日子。我有一个问题,我正在使用wpf,我无法找到从form2关闭form1的正确方法。

WpfForm form1 = new WpfForm();
form1.close();

我需要帮助。

3 个答案:

答案 0 :(得分:2)

正如Matt所说,你需要在你的第二种形式的第一种形式中有一个引用,所以假设你有这个引用,你可以简单地添加一个事件处理程序,如下图所示,在你的第一个表单的代码中的某个位置当第二个表单的引用设置为一个实例时,类似你的Window_Loaded事件将是一个很好的候选者。

secondWindow.Closing += (s, e) => this.Close();

上面是一个内联事件处理程序,如果您想要更详细的代码,可以执行以下操作:

secondWindow.Closing += CloseMe;

private void CloseMe(Object sender, EventArgs e)
{
    this.Close();
}

如果您感兴趣,Skeet先生在另一个问题here中讨论了内联事件处理程序警告。

答案 1 :(得分:1)

您需要在第二个表单中引用第一个表单。然后你可以简单地使用该引用调用close。

有几种方法可以处理它。您可以向第二个表单添加属性以保存对第一个表单的引用。当您创建第二个表单时,您将设置该属性,然后在第二个表单中的任何事件应该关闭第一个表单(例如,单击按钮),您可以使用该引用关闭表单。

答案 2 :(得分:1)

正如Matt和Paulie所说,你需要在你的第一个表单中有一个引用,所以如果你想在没有引用的情况下这样做,你可以使用静态访问修饰符和委托喜欢这里;

    public delegate void Method();
    private static Method close;

    public Form1()
    {
        InitializeComponent();
        close = new Method(Close);
    }

    public static void CloseForm()
    {
        close.Invoke();
    }

接下来在你的第二个表格中你可以关闭第一个表格而不用简单地写下这个:

Form1.CloseForm();