在Form_Closing事件中规范化最小化的窗体
本文关键字:规范化 最小化 窗体 事件 Form Closing | 更新日期: 2023-09-27 18:11:28
我有一个测试应用程序与多个形式,一个是一种粗糙的菜单。当我用按钮单击选择其他表单之一时,菜单表单最小化。所有好。
我现在想要发生的是,当我完成了第二个表单,点击红色的叉,我想要菜单从托盘打开。看起来很简单,但是我真的很纠结。
private void Form2_Closing(object sender,System.ComponentModel.CancelEventArgs e)
{
var menu = FormControl.MainMenu;
menu.WindowState = FormWindowState.Normal;
e.Cancel = false;
}
FormControl是我的类,以确保只能打开MainMenu的一个实例。代码在按钮单击事件内工作,但我无法获得任何类型的表单关闭/关闭事件触发。
好吧,你关于"Windowstate可能无法在特定事件中工作"的评论让我感到不安,所以我做了一个简单的测试:
- 创建Form1和Form2
- 添加按钮和点击事件到Form1
- 添加FormClosed事件到Form2
按钮1单击事件处理程序:
private void button1_Click(object sender, EventArgs e)
{
Form2 form2 = new Form2();
form2.WindowState = FormWindowState.Normal;
WindowState = FormWindowState.Minimized;
form2.Show(this);//Passing Form1 as owner
form2.Activate();
}
Form2 FormClosed事件处理器:
private void Form2_FormClosed(object sender, FormClosedEventArgs e)
{
this.Owner.WindowState = FormWindowState.Normal;//change state of owner form
}
结果:程序启动后-打开Form1。点击按钮后- Form1最小化和Form2弹出。关闭Form2后- Form1恢复正常状态
简历:仔细检查你的Form2是否真的订阅了FormClosed或FormClosing事件
form2.FormClosing += delegate
{
var menu = FormControl.MainMenu;
menu.WindowState = FormWindowState.Normal;
};
form2.ShowDialog(); //Or Show() whatever you wish.