Get list of open windows form instance that are excuted from different assembly

后端 未结 5 1126
醉话见心
醉话见心 2020-12-10 08:26

I have a \'loader app\' that loads a menu and when user clicks the menu image button a list view opens based on the text

(if text = employee)  
(Go to class         


        
5条回答
  •  醉酒成梦
    2020-12-10 08:57

    If you want a list of the open forms, that is Application.OpenForms. You could iterate over this, using GetType() and checking the .Assembly to find those from a different assembly. Beyond that, I'm not entire clear on the question...

            Assembly currentAssembly = Assembly.GetExecutingAssembly();
            List
    formsFromOtherAssemblies = new List(); foreach (Form form in Application.OpenForms) { if (form.GetType().Assembly != currentAssembly) { formsFromOtherAssemblies.Add(form); } }

    If you just want to track forms you have opened yourself, then cache that instance. Or if you use "owned forms", you can just check by name:

        private void button1_Click(object sender, EventArgs e) {
            foreach (Form form in OwnedForms) {
                if (form.Name == "Whatever") {
                    form.Activate();
                    return;
                }
            }
            Form child = new Form();
            child.Name = "Whatever";
            child.Owner = this;
            child.Show(this);
        }
    

提交回复
热议问题