我不能使用form.showdialog()我想使用form.show(),但是我想在from.show()之后执行代码。
public void Tools(){
var frm=new ToolFrm();
frm.Show();
//do something
}
我想返回true并在 frm
打开表单时保持执行。
如果您想在关闭无调表单时运行一些代码,则可以订阅表单的FormClosed
事件:
public bool Tools()
{
var frm = new ToolFrm();
frm.FormClosed += Form_FormClosed;
frm.Show();
return true;
}
private static void Form_FormClosed(object sender, FormClosedEventArgs e)
{
((Form)sender).FormClosed -= Form_FormClosed;
MessageBox.Show("Form was closed");
}
请注意,如果您不从FormClosed
事件中取消订阅,则订阅对象将保持对表单的引用,直到收集订阅对象为止。
为了防止这种行为,您可以像我对线路一样退订处理程序中的事件:
((Form)sender).FormClosed -= Form_FormClosed;
如果我正确理解您的问题,则在重新打开表单时要运行代码。Showdialog实际上是您想要和需要使用的选项。
private bool Tools()
{
this.Hide();
using (Form frm = new ToolFrm())
frm.ShowDialog();
DoSomethingYouWant(); //For example return true/false;
this.Show();
}
在方法DoSomethingYouWant()
中,您可以做任何想做的事情。当用户解开工具FRM时,该表格将被隐藏。
如果要运行示例新的FormLoad()
事件,则可以订阅它。通过用FormName_Load(this, e);
替换DoSomethingYouWant()
在加载事件中,您可以做:
private void Form1_Load(object sender, EventArgs e)
{
if(Tools){
Messagebox.Show("true")
}
if(!Tools{
Messagebox.Show("false")
}
}