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