四、為窗體添加菜單
4.1 添加主菜單
在.Net的System.Windows.Forms.Form(窗體)類中,有一個類型為MainMenu的屬Menu,你只需要把一個MainMenu對象賦值給窗體的Menu屬性即可以為窗體添加主菜單。
當使有MainMenu()構造生成主菜單對象時,主菜單對象中沒有任何菜單,你可以直接通過主菜單對象(MainMenu)的MenuItems集合來管理(添加或者刪除)菜單項,然後該對象直接賦給窗體的Menu屬性即可在窗體上看到主菜單。如下面的語句為當前窗體添加有一個菜單項“File”的主菜單:
MainMenu Menu1=new MainMenu();
Menu1.MenuItems.Add(new MenuItem(“File”));
this.Menu=Menu1;
當使用MainMenu(MenuItem[])構造函數生成主菜單對象時,主菜單對象將包含由參數菜單項對象中指定的一系列子菜單。如下面的代碼為當前窗體添加有兩個菜單項(“File”及“Edit”)的主菜單:
MainMenu Menu1=new MainMenu(new MenuItem[]{new MenuItem(“File”),new MenuItem(“Edit”)});
this.Menu=Menu1;
訪問一個窗體的主菜單有兩種方法:
首先,可以通過一個主菜單(MainMenu)對象的MenuItems集合進行。通過MenuItems集合的索引,可以定位到一個具體的菜單項。然後你可以給菜單項添加事件響應方法或是改變菜單項的一些屬性等操作。例如,下面我們把主菜單對象mainMenu1賦以窗體後,你可以通過下面語句訪問主菜單第一項的文本屬性值:
mainMenu1.MenuItems[0].Text=“Files”;
其次,你也可以通過窗體(Form)的Menu屬性對主菜單的項進行操作。Form類的Menu屬性返回的是一個MainMenu對象,由於對象是引類型數據,因此兩種操作的實質上都是指向同一個對象的。如上面表示第一項主菜單項文本的語句也可以如下表示:
this.Menu.MenuItems[0].Text=“Files”;
一般情況下,如果你用Visual Studio .Net開發你的程序,在工具欄中有一個MainMenu的控件,用於添加主菜單,你可以直接把該控件添加到設計窗體中,然後非常簡單的菜單項上輸入菜單文本就可以啦。如下所示:
4.2 添加子菜單
在.Net中,菜單項對象模型其實是一個樹狀的。一個菜單可以通過在其MenuItems集合中添加菜單項,使其擁有下級子菜單;子菜單同樣還可以通過相同的方法添加更下一級子菜單。
一個菜單項對象的MenItems將返回一個Menu.MenuItemCollection集合,通過這個集合可以非常方便的管理其中的元素,例如:要添加一個子菜單只需要使用集合的Add()或者AddRange()方法,刪除一個項只需要使用Remove()或者是RemoveAt()即可。
下面的代碼將為窗體添加一個主菜單,並在主菜單的第一項添加子菜單:
MainMenu Menu1=new MainMenu(new MenuItem[]{new MenuItem(“File”),new MenuItem(“Edit”),new MenuItem(“Tools”)});
this.Menu=Menu1;
MenuItem subMenu1=new MenuItem(“New”);
MenuItem subMenu2=new MenuItem(“Open”);
MenuItem subMenu3=new MenuItem(“Save”);
this.Menu.MenuItems[0].MenuItems.Add(subMenu1);
this.Menu.MenuItems[0].MenuItems.AddRange(new MenuItems[]{subMenu2,subMenu3});//使用AddRange()方法添加集合元素
其中this.Menu.MenuItem[0]表示主菜單項1,而this.Menu.MenuItem[0].MenuItems表示主菜單項1下面的子菜單。