每当我点击表单的红十字关闭按钮时,我想显示另一个表单,但是尽管已关闭事件处理程序,我无法打开另一个表单。
这就是我试图打开另一种形式的方式:
private void Form1_Closed(object sender, System.EventArgs e)
{
itemMaster.Show();
}
有人可以告诉我如何才能启用我的要求?
答案 0 :(得分:5)
首先,您应该使用FormClosed
事件而不是Closed
:
Closed
事件在.NET Framework 2.0版中已过时;请改用FormClosed
事件。 - MSDN page for theForm.Closed
event
void Form1_FormClosed(object sender, FormClosedEventArgs e)
{
// ...
}
其次,请确保您实际订阅了Form1
的{{1}}个活动:
FormClosed
Windows窗体设计器应该在Form1.FormClosed += Form1_FormClosed;
中的某处自动添加类似的行。如果没有,那就是你的处理程序方法没有被调用的原因。
如果这仍无效,请尝试处理InitializeComponent
的{{3}}事件。
答案 1 :(得分:4)
如果您已使用以下声明启动了您的申请:
Application.Run(new Form1());
当您关闭Form1
时,您的应用程序将退出。即使您打开另一个表单,它也会在应用程序退出时被终止。你可以通过在Form1_Closed
方法中设置一个断点并看到断点被击中来确定是这种情况吗?
如果是这种情况,那么您的代码会执行会发生什么,但是自应用程序退出后,您的另一个表单也会在打开后立即关闭。
要修复它,Hide()
form1而不是关闭它。处理Form_Closing
个活动并致电this.Hide()
并设置e.Cancel = true
。
答案 2 :(得分:0)
如果您已完成表单并想关闭它(例如,点击关闭按钮),请务必使用Close()
。我的form_closing
事件未被触发,因为我在点击关闭按钮时仅使用Dispose()
。
我认为关闭表单的最佳方式是同时使用Close()
和Dispose()
。
Close()
=>如果你在关闭表格时需要做某事...... Dispose()
=>破坏形式(清理资源)。
private void _btnClose_Click(object sender,EventArgs e) { 关(); 处置(); }