如何实现单实例的MDI子窗体

这也是前两天课程中的案例。讨论的是,MDI子窗体是否也可以实现单实例

这当然是可以做到的,我们通过下面这个方法来做就可以了

        private void ShowMdiChildForm(Type formType,bool singleinstance,params object[] args)

        {

            //这个方法可以加载任何的窗口作为MDI子窗体





            if (singleinstance) {

                foreach (var item in this.MdiChildren)

                {

                    if (item.GetType() == formType)

                    {

                        item.WindowState = FormWindowState.Maximized;

                        item.Activate();

                        return;

                    }

                }

            }



            Form form = (Form)this.GetType().Assembly.CreateInstance(

                formType.FullName,

                true,

                BindingFlags.Instance| BindingFlags.Public,

                null,args,

                Thread.CurrentThread.CurrentCulture,

                null);





            form.WindowState = FormWindowState.Maximized;

            form.MdiParent = this;

            form.Show();

        }

你可能感兴趣的:(DI)