如何关闭其他类的窗口

本文关键字:窗口 其他 何关闭 | 更新日期: 2023-09-27 17:50:50

我一辈子都找不到解决这个问题的办法。我有一个班,它做了几件事,其中之一就是对窗口做某些事情。其中之一是MainWindow.xaml

如果从OtherClass.cs中调用方法,我希望它关闭MainWindow.xaml。
基本上:我想访问已经实例化的窗口的代码后面的方法


在Mainwindow.xaml.cs中,我试图从OtherClass:调用它

public void CloseNow()
{
    This.Close();
}

但是要访问MainWindow.xaml.cs中的任何成员,我需要将其共享,但这将破坏让它对窗口(MainWindow.xml(执行任何操作的目的

我可能忽略了一些东西,但我似乎没有注意到。有人能告诉我处理这种情况的方法吗?

PS我在WPF工作。


为了澄清,以下是对其中一个答案的评论:

我要做的是在另一个类中运行一个命令,该类是WPF窗口的公共成员。该窗口已实例化并显示。我只想访问它的公共成员,这样为了方便起见,我就可以从另一个类操作窗口。我的这个OtherClass.cs是一个处理控制台操作的类。控制台是一个位于MainWindow.xaml.cs中的自定义控件。当用户键入例如:/close时,我希望MainWindow.xaml关闭,但不仅仅是这样,因为将来我想添加更多功能。

如何关闭其他类的窗口

在OtherClass中,添加以下方法以关闭主窗口。

public void CloseMainWindowNow()
{
  var mainWindow = (Application.Current.MainWindow as MainWindow);
  if (mainWindow != null)
  {
    mainWindow.Close();
  }
}

代理人可以帮助您。Windows窗体中的代码:

表格1:

public partial class Form1 : Form
{
    Form2 form2;
    public Form1()
    {
        InitializeComponent();
        form2 = new Form2(Closing);
    }
    private void button1_Click(object sender, EventArgs e)
    {
        form2.ShowDialog();
    }
    private void Closing()
    {
        this.Close();
    }
}

表格2:

public partial class Form2 : Form
{
    public delegate void Close();
    Close close;
    public Form2(Close close)
    {
        InitializeComponent();
        this.close = close;
    }
    private void button1_Click(object sender, EventArgs e)
    {
        close();
    }
}

因此,当您按下form2上的按钮1时,它将使用方法close((,解冻是从form1委派的,因此它将在form1上使用方法Closed并关闭form1。

class OtherClass
{
    private MainClass mainClass;
    public OtherClass(MainClass mainClass)
    {
        this.mainClass = mainClass;
    }
}

然后您可以在OtherClass中调用mainClass的任何方法。在您的情况下,MainClass是您的MainWindow.Xaml.cs

在MainWindow.Xaml.cs中,您必须创建Otherlass Otherclass=新的Otherclass(this(;