標籤:os 使用 strong for 檔案 ar 資料 代碼 log
執行個體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;
}
}
舉一反三
根據本執行個體,讀者可以開發以下功能。
製作顯示\隱藏工具列。
合并功能表列。
C#執行個體:5個.net經典例子(表單與介面設計)