程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> Windows Forms菜單設計全攻略(9)

Windows Forms菜單設計全攻略(9)

編輯:關於C語言

六、綜合實例

最後,我們使用Visual Studio .Net開發了一個涉及到菜單操作各方面的實例程序,該程序演示了如何通過C#代碼在Windows Forms窗體中添加主菜單、如何為窗體添加彈出式菜單、為菜單項添加事件響應方法及管理各菜單項並存取其屬性值等。

下面列出其中部份關鍵的代碼及注釋:

private void InitializeComponent()//自定義窗體類初始化函數,Visual Studio ..Net自動產生
{
//這裡只列出了部份代碼
this.button4.Text = "刪除彈出菜單";
this.button4.Click += new System.EventHandler(this.button4_Click);
this.button1.Text = "添加主菜單";
this.button1.Click += new System.EventHandler(this.button1_Click);
this.button2.Text = "添加彈出菜單";
this.button2.Click += new System.EventHandler(this.button2_Click);
this.button3.Click += new System.EventHandler(this.button3_Click);
}
private void button1_Click(object sender, System.EventArgs e)////當用戶點擊按鈕button1(添加主菜單)時執行該方法
{
MenuItem menuItem1=new MenuItem();
MenuItem menuItem2=new MenuItem();
MenuItem menuItem3=new MenuItem();
MenuItem menuItem4=new MenuItem();
MainMenu mainMenu1=new MainMenu();
// 設置菜單項的顯示文本.
menuItem1.Text = "Edit";
menuItem2.Text = "Font Size";
menuItem3.Text = "Small";
// 設置菜單項的Checked屬性為true
menuItem3.Checked = true;
// 為菜單定義一個快捷訪問鍵.
menuItem3.Shortcut = Shortcut.CtrlS;
// 設置菜單項文本
menuItem4.Text = "Large";
// 為菜單定義一個快捷訪問鍵.
menuItem4.Shortcut = Shortcut.CtrlL;
// Set the index of the menu item so it is placed below the first submenu item.
menuItem4.Index = 1;
// 把菜單menuItem3及menuItem3加到menuItme2的子菜單中.
menuItem2.MenuItems.Add(menuItem3);
menuItem2.MenuItems.Add(menuItem4);
// 把菜單menuItem2加為菜單一的子菜單
menuItem1.MenuItems.Add(menuItem2);
// 為窗體添加主菜單
mainMenu1.MenuItems.Add(new MenuItem("File"));
mainMenu1.MenuItems.Add(menuItem1);
mainMenu1.MenuItems.Add(new MenuItem("VIEw"));
mainMenu1.MenuItems.Add(new MenuItem("Tools"));
mainMenu1.MenuItems.Add(new MenuItem("Windows"));
this.Menu=mainMenu1;
file://為部份菜單項添加Click事件響應方法
this.Menu.MenuItems[0].Click+=new System.EventHandler(this.Test);
menuItem3.Click+=new System.EventHandler(this.Test);
this.Menu.MenuItems[2].Click+=new System.EventHandler(this.Test);
}
private void button2_Click(object sender, System.EventArgs e)//當用戶點擊按鈕button2(添加彈出菜單)時執行該方法
{
file://為當前窗體添加彈出式菜單
this.ContextMenu=new ContextMenu(new MenuItem[]{new MenuItem("PopMenu1"),new MenuItem("PopMenu2"),new MenuItem("PopMenu3"),new MenuItem("PopMenu4")});
file://設置彈出菜單第一項的Click事件響應方法為Test()
this.ContextMenu.MenuItems[0].Click+=new System.EventHandler(this.Test);
}
private void button3_Click(object sender, System.EventArgs e)//當用戶點擊按鈕button3(刪除主菜單)時執行該方法
{
try
{
MenuItem temp=new MenuItem();
file://把窗體主菜單的最後一項賦給temp對象,注意對象是引用類型
temp=this.Menu.MenuItems[this.Menu.MenuItems.Count-1];
file://顯示刪除的提示信息
MessageBox.Show("將要刪除了菜單:"+temp.Text,"提示信息!");
file://刪除主菜單
this.Menu.MenuItems.Remove(temp);
}
catch
{
MessageBox.Show("操作無效,可能是已經沒有菜單供您刪除!","提示信息");
}
}
private void button4_Click(object sender, System.EventArgs e)//當用戶點擊按鈕button4(刪除彈出菜單)時執行該方法
{
try
{
MenuItem temp=new MenuItem();
file://取得當前窗體彈出菜單的最後一項的引用
temp=this.ContextMenu.MenuItems[this.ContextMenu.MenuItems.Count-1];
file://顯示提示信息
MessageBox.Show("將要刪除了菜單:"+temp.Text,"提示信息!");
// 刪除最彈出菜單的最後一項
this.ContextMenu.MenuItems.Remove(temp);
}
catch
{
MessageBox.Show("操作無效,可能是已經沒有菜單供您刪除!","提示信息");
}
}
private void Test(object sender,System.EventArgs e)
{
file://當執行時彈出提示信息顯示框,注意此句中對sender對象的強制類型轉換
MessageBox.Show("你通過菜單:"+((MenuItem)sender).Text+"執行本程序!","提示信息");
}

執行該程序將為顯示一個沒有任何菜單的窗體,你可以通過按鈕為窗體添加主菜單及彈出式菜單,還可以通過按鈕逐個刪除菜單項,點擊部份菜單項還會看到其Click事件響應方法的運行的提示信息等。如下圖所示:

總結:

通過學習我們知道,.Net為我們提供了一系列關於菜單程序設計的類,通過這些類你可以構建基本上所有的菜單應用程序。

在.Net中,主菜單及彈出式菜單分別是由MainMenu及ContextMenu類定義;所有的菜單都是由菜單項(MenuItem類)構成,也就是說不管是哪一種類型的菜單,其基本的元素都是MenuItem對象。

除了部分類(如集合類)以外,在Windows Forms中,大部分菜單相關的類都是由Menu類繼承而來,在Menu中提供了一個MenuItems的菜單項目集合,通過其可以達到非常方便的管理一個菜單系列中的菜單項(如添加、刪除等),還可以構建一個菜單項的下級子菜單等。

與.Net中的其它所有對象一樣,要控制菜單執行相應的程序,需要為菜單對象添加事件的響應方法。

最後,大家可以看到,在C# Windows Forms程序中,菜單的使用是非常靈活的,而且結構也是很清晰的。靈活掌握菜單各種類的關系及使用方法,將會使你在Windows Forms中編寫菜單程序中得心應手。

-
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved