打开表格的方法:
form1 - > form2 - > form3
form1上的ChecklistBox。如何知道form3是否有效?
答案 0 :(得分:1)
如果您引用的表单是MDI child forms,则可以使用
Form activeChild = this.ActiveMdiChild;
如果不使用MDI子表单,则可以使用以下代码。
Form currentForm = Form.ActiveForm;
答案 1 :(得分:0)
我知道您在询问是否打开了表单3。如果这不正确,请赐教。
可能有很多方法可以做到,这完全取决于你想做什么。
一种简单的方法是在某个地方留一个标志,比如在Program.cs文件中:
public static bool Form3IsOpen = false;
然后:
private void Form3_Load(sender object, EventArgs e)
{
Program.Form3IsOpen = true;
}
和
private void Form3_Close(sender object, EventArgs e)
{
Program.Form3IsOpen = false;
}
补充:
您还可以保留对子表单的引用:
在form1.cs中:
private Form2 FormChild;
//In the function that opens the Form2:
FormChild = new Form2();
FormChild.Show();
Form2将有类似的东西保留Form3。如果一个表单可以打开几个,只需使用数组或集合。
答案 2 :(得分:0)
当我通常有许多不同的形式并且只创建一个实例时,我将它们放入dictonary并检查是否有表格。
这样的事情:
public static Dictonary<string, Form> act_forms_in_app = new Dictonary<string, Form>();
现在在每个表单创建中我都这样做
Form1 frm = new Form1();
frm.Name = "Myformname"
//set its properties etc.
frm.Load => (s,ev) { act_forms_in_app.Add(frm.Name, frm);};
frm.Load += new EventHandler(frm_Load);
frm.Disposed => (s, ev) { act_forms_in_app.Remove(frm.Name)};
//your usual form load event handler
public void frm_Load(object sender, EventArguments e)
{
...
}
您要检查的地方
Form frm = //Your form object
if(act_forms_in_app.ContainsKey(frm.Name))
{
//Perform as required
}