C#實例:5個.net經典例子(窗體與界面設計) 數據庫
實例001 帶歷史信息的菜單 數組
實例說明 工具
在開發圖紙管理軟件時,要求在菜單上記錄用戶最近打開的檔案或圖紙,以方便下次使用。如圖1.1所示,單擊「文件」菜單下的「打開文件」子菜單,打開須要查閱的圖紙。下次運行該軟件時,上次打開的文件名記錄到「文件」菜單的歷史菜單中,選擇該菜單,便可打開相應的圖紙文件。 動畫
技術要點 ui
要實現保存最近打開的文件,能夠將在菜單中最近打開文件的文件名和路徑保存到事先創建的*.ini文件中,系統啓動時讀取*.ini中的數據創建數組菜單,便可實現顯示歷史菜單的功能。 this
注意:要創建一個帶歷史信息的菜單,必須首先添加一個MenuStrip菜單控件,並將主窗體的IsMdiContainer屬性設爲True。 .net
實現過程 設計
(1)建立一個項目,將其命名爲Ex01_01,默認窗體爲Form1。 日誌
(2)從工具箱中向Form1窗體添加MenuStrip控件,同時向窗體添加OpenFileDialog控件。建立一個「文件」主菜單,在其下面建立打開、關閉全部、退出等菜單選項。 orm
(3)主要程序代碼。
將打開文件路徑寫入INI文件的實現代碼以下:
private void 打開ToolStripMenuItem_Click(object sender, EventArgs e)
{
openFileDialog1.FileName = "";
this.openFileDialog1.ShowDialog();
StreamWriter s = new StreamWriter(address + "\\Menu.ini", true);
s.WriteLine(openFileDialog1.FileName);//寫入INI文件
s.Flush();
s.Close();
ShowWindows(openFileDialog1.FileName);
}
讀取INI文件並將信息加入菜單的實現代碼以下:
private void Form1_Load(object sender, EventArgs e)
{
StreamReader sr = new StreamReader(address + "\\Menu.ini");
int i = this.文件ToolStripMenuItem.DropDownItems.Count-2;
while (sr.Peek()>=0)//讀取INI文件
{
ToolStripMenuItem menuitem = new ToolStripMenuItem(sr.ReadLine());
this.文件ToolStripMenuItem.DropDownItems.Insert(i, menuitem);
i++;
menuitem.Click += new EventHandler(menuitem_Click);
}
sr.Close();
}
自定義方法ShowWindows()用來加載背景圖片並顯示窗體,實現代碼以下:
public void ShowWindows(string fileName)
{
Image p = Image.FromFile(fileName);
Form f = new Form();
f.MdiParent = this;
f.BackgroundImage = p;
f.Show();
}
觸類旁通
根據本實例,讀者能夠開發如下程序。
記錄用戶操做菜單日誌的程序。在用戶單擊菜單時,把用戶、菜單命令和菜單對應功能寫入保存菜單日誌的INI文件。若是須要查看日誌,只需打開INI文件。
經過數據庫保存菜單歷史信息的程序。
菜單使用頻率的程序。把用戶使用菜單的數據信息保存到數據庫中,而後統計用戶使用菜單的頻率,並根據此頻率調整菜單的顯示順序。
實例002 菜單動態合併
實例說明
在程序中常常使用彈出菜單,而且一個窗體中能夠存在多個彈出菜單。開發過MDI窗體的讀者可能都知道,當MDI子窗體最大化時,子窗體和主窗體的菜單可以自動的合併。這是如何實現的呢?本例實現了將兩個彈出菜單動態的合併成一個彈出菜單的功能。實例效果如圖1.2所示。
技術要點
C# 2.0中已經將彈出菜單封裝爲Context MenuStrip控件,利用該控件中的Items對象能夠操做菜單中的菜單項。該對象是ToolStripMenuItem類型,使用Items.AddRange( )方法能夠向彈出菜單中添加菜單項,該方法原型以下。
public void AddRange (
ToolStripItem[] toolStripItems
)
參數說明以下。
l toolStripItems:控件的數組。
實現過程
(1)建立一個項目,將其命名爲Ex01_02,默認窗體爲Form1。
(2)從工具箱中向Form1窗體添加一個MenuStrip控件用來設計菜單;同時向窗體添加ContextMenuStrip控件用來設計右鍵菜單;選中MenuStrip控件建立一個「打開子窗體」主菜單,而後選中ContextMenuStrip控件爲其添加子項。
(3)爲程序添加一個窗體,默認名爲Form2,同時向窗體添加ContextMenuStrip控件用來設計右鍵菜單,而後選中ContextMenuStrip控件爲其添加子項。
(4)主要程序代碼。
private void 打開自窗體ToolStripMenuItem_Click(object sender, EventArgs e)
{
Form2 f= new Form2();
f.MdiParent = this;
f.Show();//顯示子窗體
f.Resize += new EventHandler(f_Resize);
}
void f_Resize(object sender, EventArgs e)
{
Form2 f= (Form2)sender;
ToolStripMenuItem item = new ToolStripMenuItem();
for (int i = 0; i < f.contextMenuStrip2.Items.Count; )//合併菜單
{
item.DropDownItems.Add(f.contextMenuStrip2.Items[i]);
}
this.contextMenuStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
item});
}
觸類旁通
根據本實例,讀者能夠實現如下功能。
讓右鍵菜單在子窗體中顯示。
讓右鍵菜單在主窗體和子窗體中同時顯示。
實例003 像開始菜單同樣漂亮的菜單
實例說明
Windows的開始菜單很是的獨特,在菜單的旁邊有一條豎着的彩條,彩條中還寫着文字。這種獨特的菜單可以使程序的界面看起來更加的漂亮。本例中就實現了這種菜單,運行本例彈出「打開菜單」時,就會看到菜單的左邊有一個紫色的彩條。實例效果如圖1.3所示。
技術要點
在C# 2.0中,MenuStrip控件中的子項ToolStripMenuItem已經包括了左側的彩條,實現像開始菜單同樣的菜單很是容易,不像在其餘計算機語言的開發環境中,須要調用API才能夠實現。若是想改變左側豎着的彩條,只要給對應的菜單項設置相應的圖片便可。
注意:若是要在左側彩條顯示文字,只要在對應的圖片上加入文字便可。
實現過程
(1)建立一個項目,將其命名爲Ex01_03,默認窗體爲Form1。
(2)從工具箱中向Form1窗體添加MenuStrip控件。
(3)爲MenuStrip控件添加相應的子項。
(4)爲子項添加相應的圖片。
觸類旁通
根據本實例,讀者能夠實現如下功能。
將菜單元設置成不一樣的格式(如圖片、文字等)。
在菜單左側播放動畫。
實例004 任務欄托盤菜單
實例說明
有一些軟件一般只是在後臺運行,這些進程大部分時間不顯示用戶界面。可經過單擊任務欄狀態通知區域的圖標來訪問的病毒防禦程序就是一個示例。Windows窗體中的NotifyIcon控件一般用於顯示在後臺運行的進程的圖標,本實例利用該控件製做了一個任務欄托盤菜單。實例效果如圖1.4所示。
技術要點
要實現程序啓動時出如今系統托盤中。必需要爲窗體添加NotifyIcon 控件和ContextMenuStrip控件。
注意:必須爲NotifyIcon 控件的Icon屬性設置圖標。
實現過程
(1)建立一個項目,將其命名爲Ex01_04,默認窗體爲Form1。
(2)向Form1窗體添加NotifyIcon 控件和ContextMenuStrip控件,併爲ContextMenuStrip控件添加子項。
(3)選擇NotifyIcon 控件,在其屬性窗口中將ContextMenuStrip屬性設置爲添加到窗體上的ContextMenuStrip控件,併爲Icon屬性設置圖片。
觸類旁通
根據本實例,讀者能夠開發如下程序。
程序啓動時不出現界面,直接出如今系統托盤中運行的後臺程序。
程序啓動時不出如今任務欄中。
實例005 能夠拉伸的菜單界面
實例說明
若是管理程序功能菜單很是多,而用戶只使用一些經常使用菜單,這時,能夠將主菜單項下的不經常使用菜單隱藏起來。此種顯示方式相似於對菜單進行拉伸。使用時,只需單擊展開菜單,便可顯示相應菜單功能。運行本例,效果如圖1.5所示。
技術要點
要實現能夠拉伸的菜單,關鍵是要使用一個開關變量,同時調用ShowDropDown()方法,顯示操做後的結果。下面詳細介紹一下該方法。
ShowDropDown()方法用來顯示與此ToolStripDrop DownItem關聯的ToolStripDropDownItem控件。其語法結構以下:
public void ShowDropDown ()
另外,用ShowDropDown()方法還能夠顯示已由 DropDown 屬性設置的下拉控件。
注意:必須設置開關變量的初值。
實現過程
(1)建立一個項目,將其命名爲Ex01_05,默認窗體爲Form1。
(2)從工具箱中向Form1窗體添加MenuStrip控件,選中MenuStrip控件爲其添加子項。
(3)雙擊「展開(關閉)子項」爲其雙擊事件添加處理代碼。
(4)主要程序代碼。
private void Form1_Load(object sender, EventArgs e)
{
//初始設置下面的菜單隱藏
this.設置密碼ToolStripMenuItem.Visible = false;
this.添加用戶ToolStripMenuItem.Visible = false;
this.忘記密碼ToolStripMenuItem.Visible = false;
this.修改密碼ToolStripMenuItem.Visible = false;
this.員工錄入ToolStripMenuItem.Visible = false;
}
private void toolStripMenuItem1_Click(object sender, EventArgs e)
{
switch (i)
{
case 1:
this.設置密碼ToolStripMenuItem.Visible = false;
this.添加用戶ToolStripMenuItem.Visible = false;
this.忘記密碼ToolStripMenuItem.Visible = false;
this.修改密碼ToolStripMenuItem.Visible = false;
this.員工錄入ToolStripMenuItem.Visible = false;
i = 2;
this.操做ToolStripMenuItem.ShowDropDown();
break;
case 2:
this.設置密碼ToolStripMenuItem.Visible = true;
this.添加用戶ToolStripMenuItem.Visible = true;
this.忘記密碼ToolStripMenuItem.Visible = true;
this.修改密碼ToolStripMenuItem.Visible = true;
this.員工錄入ToolStripMenuItem.Visible = true;
i = 1;
this.操做ToolStripMenuItem.ShowDropDown();
break;
}
}
觸類旁通
根據本實例,讀者能夠開發如下功能。
製做顯示\隱藏工具欄。
合併菜單欄。