C#:通过反射动态窗体的名字打开MDI窗体,且唯一打开一个

        private void showForm(object sender)
        {
            //每个Menu字项的名字与Form的名字是有关联的,举个例子
            //Menu名字:m_DataShow,Form的名字:m_DataShowForm
            string formName;
            formName =(sender as ToolStripMenuItem).Name.Replace("m_", ""); //Menu的名字m_Data
            Console.WriteLine(formName);

            formName = formName.Substring(0, 1).ToUpper() + formName.Substring(1) + "Form";
            formName = "AutomatedOrdering." + formName; //命名空间

            Assembly assmbly = Assembly.GetExecutingAssembly();
            Form form = assmbly.CreateInstance(formName) as Form;

            foreach (Form openForm in this.MdiChildren) //仅止FORM多开,相同的仅打开一个
            {
                if (openForm.Name == form.Name)
                {
                    openForm.Activate();
                    form.Dispose();
                    return;
                }
            }

            form.MdiParent = this;
            form.Show();
        }

        private void SubMenu_Click(object sender, EventArgs e) //每个菜单的onClick事件,全部指向这个过程
        {
            showForm(sender);
        }

猜你喜欢

转载自blog.csdn.net/jyh_jack/article/details/79175230