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);
        }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值