下面的代码片断假设你的多文档应用程序中包含一个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(); } } } } 这样,就实现了一个单窗口实例的解决方案。
|
关键词: MDI应用中的单案例(singleton)窗口