我的应用程序中有2个表单,Form1并且Form2.我想知道是否有更好的方法来检查表单是否已经加载.如果表单加载到内存中并且可见,我希望按钮不执行任何操作,如果User
已关闭表单,则应该重新实例化它.
有关更多信息,请查看我的代码或评论.. :)
public partial class Form1: Form
{
private Form2 form2;
public Form1() {
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e) {
if (form2== null) {
form2= new Form2();
} else {
if (form2.has_exited()) { // this is a private property
// that I set when Form2.Closing executes
form2.Dispose();
form2= new Form2();
}
}
form2.Show();
}
}
Run Code Online (Sandbox Code Playgroud)
您无需Form2处理结束事件,您可以直接从Form1以下位置执行此操作:
private Form2 form2;
private void button1_Click(object sender, EventArgs e)
{
if (form2 == null)
{
form2 = new Form2();
form2.FormClosed += (_, arg) =>
{
form2 = null;
};
form2.Show();
}
else
{
//the other form has been opened and not closed; not sure what you want to do
}
}
Run Code Online (Sandbox Code Playgroud)
另请注意,如果Show您通过表格显示表格,则无需处理.如果你通过ShowDialog那时显示它,那么当你使用非模态对话框时,系统会自动将事件处理程序附加到调用dispose的结束事件.
| 归档时间: |
|
| 查看次数: |
4010 次 |
| 最近记录: |