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

}

}

}

}

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