开发者

Relationship between the two forms

Methods op开发者_开发知识库ening forms :

form1 --> form2 --> form3

ChecklistBox on the form1 there. How to know the form3 That is active or not?


If the forms you are referencing are MDI child forms, you could use

Form activeChild = this.ActiveMdiChild;

else you could use the following code if not using MDI child forms.

Form currentForm = Form.ActiveForm;


I understand that you are asking if form 3 is opened. If that is incorrect, please enlighten me.

There are probably dozens of ways to do so, it all depends on what you want to do.

One simple way would be to leave a flag somewhere, say in your Program.cs file:

public static bool Form3IsOpen = false;

Then:

private void Form3_Load(sender object, EventArgs e)
{
    Program.Form3IsOpen = true;
}

And:

private void Form3_Close(sender object, EventArgs e)
{
    Program.Form3IsOpen = false;
}

Supplemental:

You can also keep a reference to your subform:

In form1.cs:

private Form2 FormChild;

//In the function that opens the Form2:
FormChild = new Form2();
FormChild.Show();

Form2 will have something similar to retain Form3. If one form can open several, just use an array or collection.


When i usually have many different forms and only one instance to be created, i put them in dictonary and check it if there is a form.

Something like this:

 public static Dictonary<string, Form> act_forms_in_app = new Dictonary<string, Form>();

now in every forms creation i do it like this

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)
{
    ...
}

somewhere where you want to check

Form frm = //Your form object
if(act_forms_in_app.ContainsKey(frm.Name))
{
     //Perform as required
}
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜