明輝手游網(wǎng)中心:是一個(gè)免費(fèi)提供流行視頻軟件教程、在線學(xué)習(xí)分享的學(xué)習(xí)平臺(tái)!

MDI應(yīng)用中的單案例(singleton)窗口

[摘要]下面的代碼片斷假設(shè)你的多文檔應(yīng)用程序中包含一個(gè)toolbar。當(dāng)你點(diǎn)擊toolBarButton1 按鈕時(shí),將會(huì)創(chuàng)建并顯示一個(gè) Patients 子窗口。下面的代碼在單機(jī)事件時(shí)發(fā)生。private ...
下面的代碼片斷假設(shè)你的多文檔應(yīng)用程序中包含一個(gè)toolbar。當(dāng)你點(diǎn)擊toolBarButton1 按鈕時(shí),將會(huì)創(chuàng)建并顯示一個(gè) Patients 子窗口。下面的代碼在單機(jī)事件時(shí)發(fā)生。

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();
}
}
}
}
這樣,就實(shí)現(xiàn)了一個(gè)單窗口實(shí)例的解決方案。