如何关闭其他类的窗口
本文关键字:窗口 其他 何关闭 | 更新日期: 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(;