我正在使用继承我的主窗口类的类。我试图关闭我的窗口,但似乎没有工作,并没有提供任何错误。也许我不明白这种继承的工作方式,但请帮助我理解。
我只是继承我的MainWindow类以尝试访问我的close方法。如果这不是最好的方法,请告诉我。
主窗口类:
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
protected void CloseProgram()
{
Close();
}
private void Go_Button_Click(object sender, RoutedEventArgs e)
{
ExcelOperations temp = new ExcelOperations();
temp.Begin();
}
}
来自我的其他班级:
class ExcelOperations : MainWindow
{
private void MethodName()
{
try
{
// My Code Here
}
catch
{
// Show Error Message
// I have tried this.Close(); but it does nothing
this.CloseProgram(); // This also seems to do nothing
}
}
}
答案 0 :(得分:2)
有多种方法可以做到这一点,但总的来说,我不会让一个班级负责结束你的申请。
您仍然可以处理类中的错误(显示错误),但随后将异常抛到链上,因此click
事件可以关闭表单。
private void MethodName()
{
try
{
// My Code Here
}
catch
{
// Show Error Message
throw;
}
}
返回主窗口:
private void Go_Button_Click(object sender, RoutedEventArgs e)
{
try
{
ExcelOperations temp = new ExcelOperations();
temp.Begin();
}
catch
{
// close the program
}
}
编辑:
Servy提供了一个很好的解释,说明你遇到问题的原因。
这是因为ExcelOperations从未显示过。他认为通过继承主窗口他能够操纵它,只是因为他可以访问适当的方法,但它实际上是操纵(即关闭)第一个从未显示过的窗口。
所以ExcelOperations
不应该从MainWindow
继承(我知道你只是这样做以尝试从课程中关闭),那个特定的逻辑应该留在MainWindow本身。
答案 1 :(得分:0)
你有两个主窗口。启动应用程序时创建的MainWindow以及触发Go_Button_Click事件时创建的ExcelOperations窗口。
如果要显式关闭应用程序,Application.Shutdown()方法将为您执行此操作。
您还可以通过ShutdownMode
控制应用关闭的方式答案 2 :(得分:0)
将您的MainWindow
课程转到第二个ExcelOperations
课程......并且不要继承MainWindow
:
class ExcelOperations
{
private MainWindow parent;
public ExcelOperations(MainWindow parent)
{
this.parent = parent;
}
private void MethodName()
{
try
{
// My Code Here
}
catch
{
// Show Error Message
parent.Close();
}
}
}