C#實例:5個.net經典例子(窗體與界面設計)
實例001 帶歷史信息的菜單
實例說明
在開發圖紙管理軟件時,要求在菜單上記錄用戶最近打開的檔案或圖紙,以方便下次使用。如圖1.1所示,單擊“文件”菜單下的“打開文件”子菜單,打開需要查閱的圖紙。下次運行該軟件時,上次打開的文件名記錄到“文件”菜單的歷史菜單中,選擇該菜單,即可打開相應的圖紙文件。
技術要點
要實現保存最近打開的文件,可以將在菜單中最近打開文件的文件名和路徑保存到事先建立的*.ini文件中,系統啟動時讀取*.ini中的數據建立數組菜單,即可實現顯示歷史菜單的功能。
注意:要建立一個帶歷史信息的菜單,必須首先添加一個MenuStrip菜單控件,並將主窗體的IsMdiContainer屬性設為True。
實現過程
(1)創建一個項目,將其命名為Ex01_01,默認窗體為Form1。
(2)從工具箱中向Form1窗體添加MenuStrip控件,同時向窗體添加OpenFileDialog控件。創建一個“文件”主菜單,在其下面創建打開、關閉所有、退出等菜單選項。
(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;
}
}
舉一反三
根據本實例,讀者可以開發以下功能。
制作顯示\隱藏工具欄。
合並菜單欄。