MDI应用中的单实例(singleton)窗口

下面的代码片断假设你的多文档应用程序中包含一个 toolbar 。当你点击 toolBarButton1 按钮时,将会创建并显示一个 Patients 子窗口。下面的代码在单机事件时发生。

private void toolBar1_ButtonClick(object sender, 


     System.Windows.Forms.ToolBarButtonClickEventArgs e)


{


    _// a flag to store if the child form is opened or not_


    bool found = false;


 


    if (e.Button == toolBarButton1)


    {


       _// get all of the MDI children in an array_


       Form[] charr = this.MdiChildren;


 


       if (charr.Length == 0)      _// no child form is opened_


       {


          Patients myPatients = new Patients();


          myPatients.MdiParent = this;


          _// The StartPosition property is essential_


          _// for the location property to work_


          myPatients.StartPosition = FormStartPosition.Manual;


          myPatients.Location = new Point(0,0);


          myPatients.Show();


        }


        else      _// child forms are opened_


        {


 


          foreach (Form chform in charr)


          {


            if (chform.Name == "Patients")


            _// one instance of the form is already opened_


            {


              chform.Activate();


              found = true;


              break;   _// exit loop_


            }


            else


              found = false;      _// make sure flag is set to_


                                  _// false if the form is not found_


          }


 


          if (found == false)    


          {


            Patients myPatients = new Patients();


            myPatients.MdiParent = this;


            _// The StartPosition property is essential_


            _// for the location property to work_


            myPatients.StartPosition = FormStartPosition.Manual;


            myPatients.Location = new Point(0,0);


            myPatients.Show();


          }


        }


    }


}

这样,就实现了一个单窗口实例的解决方案。

Published At
Categories with Web编程
Tagged with
comments powered by Disqus