【原創源碼】(01):利用事件-委託,實現主-子表單動態顯示,不同功能表列,不同工具列。(類似SQL Server 2000 企業管理器)
歡迎大家發表意見(漏洞,效能等)。在部落格園社區以外轉載,請註明作者和出處。謝謝!
1,建立工程“EnterpriseManagerWindow”。
2,添加主介面“frmMain.cs”(Windows表單)。
在“frmMain.cs”中添加控制項“menuStrip1”(MenuStrip)。
設定“frmMain.cs”的屬性:IsMdiContainer=True。
設定“frmMain.cs”的屬性:MainMenuStrip=menuStrip1。
在“menuStrip1”中添加控制項“fileToolStripMenuItem”(ToolStripMenuItem)
在“menuStrip1”中添加控制項“actionToolStripMenuItem”(ToolStripMenuItem)
在“menuStrip1”中添加控制項“viewToolStripMenuItem”(ToolStripMenuItem)
在“menuStrip1”中添加控制項“toolsToolStripMenuItem”(ToolStripMenuItem)
在“menuStrip1”中添加控制項“windowToolStripMenuItem”(ToolStripMenuItem)
在“menuStrip1”中添加控制項“helpToolStripMenuItem”(ToolStripMenuItem)
在“windowToolStripMenuItem”中添加控制項“consoleToolStripMenuItem”(ToolStripMenuItem)
在“windowToolStripMenuItem”中添加控制項“designToolStripMenuItem”(ToolStripMenuItem)
3,添加子介面“frmConsole.cs”(Windows表單)。
在“frmConsole.cs”中添加控制項“toolStrip1”(ToolStrip)。
在“toolStrip1”中添加控制項“forwardToolStripButton”(ToolStripButton)
在“toolStrip1”中添加控制項“backToolStripButton”(ToolStripButton)
在“frmConsole.cs”中添加委託,事件,觸發方法,以及一個FormClosed事件代碼。
public delegate void FormExitEventHandler();
public event FormExitEventHandler ExitEvent;
private void OnPost()
{
if (this.ExitEvent != null)
{
this.ExitEvent();
}
}
private void frmConsole_FormClosed(object sender, FormClosedEventArgs e)
{
this.OnPost();
}
4,添加子介面“frmDesign.cs”(Windows表單)。
在“frmDesign.cs”中添加控制項“toolStrip1”(ToolStrip)。
在“toolStrip1”中添加控制項“saveToolStripButton”(ToolStripButton)
在“toolStrip1”中添加控制項“attributeToolStripButton”(ToolStripButton)
在“toolStrip1”中添加控制項“setPrimaryKeyToolStripButton”(ToolStripButton)
在“frmConsole.cs”中添加委託,事件,觸發方法,以及一個FormClosed事件代碼。
public delegate void FormExitEventHandler();
public event FormExitEventHandler ExitEvent;
private void OnPost()
{
if (this.ExitEvent != null)
{
this.ExitEvent();
}
}
private void frmDesign_FormClosed(object sender, FormClosedEventArgs e)
{
this.OnPost();
}
5,在主介面“frmMain.cs”中添加2個方法,2個事件。
private void consoleToolStripMenuItem_Click(object sender, EventArgs e)
{
frmConsole obj = new frmConsole();
obj.ExitEvent += new frmConsole.FormExitEventHandler(ConsoleExit);
obj.MaximizeBox = true;
obj.MinimizeBox = true;
obj.ShowInTaskbar = false;
obj.StartPosition = FormStartPosition.Manual;
obj.WindowState = FormWindowState.Maximized;
obj.MdiParent = this;
obj.Show();
}
private void ConsoleExit()
{
this.fileToolStripMenuItem.Visible = true;
this.actionToolStripMenuItem.Visible = true;
this.viewToolStripMenuItem.Visible = true;
this.toolsToolStripMenuItem.Visible = true;
this.windowToolStripMenuItem.Visible = true;
this.helpToolStripMenuItem.Visible = true;
}
private void designToolStripMenuItem_Click(object sender, EventArgs e)
{
this.fileToolStripMenuItem.Visible = true;
this.actionToolStripMenuItem.Visible = false;
this.viewToolStripMenuItem.Visible = false;
this.toolsToolStripMenuItem.Visible = false;
this.windowToolStripMenuItem.Visible = true;
this.helpToolStripMenuItem.Visible = true;
frmDesign obj = new frmDesign();
obj.ExitEvent += new frmDesign.FormExitEventHandler(DesignExit);
obj.MaximizeBox = true;
obj.MinimizeBox = true;
obj.ShowInTaskbar = false;
obj.StartPosition = FormStartPosition.Manual;
obj.WindowState = FormWindowState.Maximized;
obj.MdiParent = this;
obj.Show();
}
private void DesignExit()
{
this.fileToolStripMenuItem.Visible = true;
this.actionToolStripMenuItem.Visible = true;
this.viewToolStripMenuItem.Visible = true;
this.toolsToolStripMenuItem.Visible = true;
this.windowToolStripMenuItem.Visible = true;
this.helpToolStripMenuItem.Visible = true;
}
6, 附原始碼:http://files.cnblogs.com/ClarkChan/EnterpriseManagerWindow_060920.rar
注意!在部落格園社區以外轉載,必須註明:
作者:Clark Chan
和原文出處:http://clarkchan.cnblogs.com/
否則謝絕轉載!