資料來源:http://felix0624.blog.ithome.com.tw/
建立Windows MDI程式(一) -- 建立父視窗
1. 新增Window Form
2. 設定屬性:
IsMdiContainer: true
WindowState: maximized
建立Windows MDI程式(二) -- 加入Menu
建立完父視窗, 現在在父視窗加入menu, 並且有瀏覽已開子視窗及並排, 重疊顯示功能, 完成時如下圖
(一) 加入Menu
1. 新增主Menu: mainMenu
2. 新增次Menu
outMenuItem: 銷貨作業
basicMenuItem: 基本資料作業
sysMenuItem: 系統設定
windowMenuItem: 視窗
cascadeMenuItem: 重疊顯示
titileVerticalMenuItem: 垂直並排
tileHorizontalMenuItem: 水平並排
(二)設定瀏覽已開過的視窗
假設要將已開過的子視窗列於[視窗](windowMenuItem), 設定方式如下
將主menu(mainMenu)的MdiWindowListItem屬性設為windowMenuItem即可
(三) 設定重疊顯示
private void cascadeMenuItem_Click(object sender, EventArgs e)
{
LayoutMdi(MdiLayout.Cascade);
}
(四) 設定垂直並排
private void tileVerticalMenuItem_Click(object sender, EventArgs e)
{
LayoutMdi(MdiLayout.TileVertical);
}
(五) 設定水平並排
private void tileHorizontalMenuItem_Click(object sender, EventArgs e)
{
LayoutMdi(MdiLayout.TileHorizontal);
}
(六)開啟子視窗
private void form1MenuItem_Click(object sender, EventArgs e)
{
Form1 form = new Form1();
form.MdiParent = this;
form.Show();
}
建立Windows MDI程式(三) -- 開啟子視窗
一般開啟子視窗之方式如下:
private void forem1MenuItem_Click(object sender, EventArgs e)
{
Form1 form = new Form1();
form.MdiParent = this;
form.Show();
}
但是這樣有一個狀況, 就是如果在執行一次, 還是會再開一次, 因此若要避免此一狀況, 方法如下
public bool IsShowChildForm(string MdiFormName)
{
foreach (Form var in MdiChildren)
{
if (MdiFormName == var.Name)
{
return false;
}
else
{
return true;
}
}
return true;
}
public void CloseChildForm(string MdiFormName)
{
Form activechild = this.ActiveMdiChild;
if (activechild != null)
{
activechild.Close();
}
}
private void enterFormToolStripMenuItem_Click(object sender, EventArgs e)
{
//開啟進入視窗 關閉目前子視窗
if (IsShowChildForm("frmEnter"))
{
EnterForm frmEnter = new EnterForm();
CloseChildForm("frmInfor");
frmEnter.TopMost = true;
frmEnter.MdiParent = this;
frmEnter.WindowState = FormWindowState.Maximized;
frmEnter.Activate();
frmEnter.Show();
}
}
沒有留言:
張貼留言