Windows 窗体上的菜单是使用 MainMenu 对象创建的,该对象是一个 MenuItem 对象集合。可以在设计时向 Windows 窗体添加菜单,方法是添加MainMenu 组件然后使用菜单设计器向其追加菜单项。还可以用编程方法添加菜单,方法是向 Windows 窗体添加一个或多个 MainMenu 对象并向该集合中添加 MenuItem 对象。本主题中的过程说明如何使用菜单设计器或代码创建一个名为 File 的简单菜单。
在设计时向 Windows 窗体添加菜单
- 在 Windows 窗体设计器中打开要将菜单添加到的窗体。
- 在“工具箱”中双击 MainMenu 组件。
一个菜单被添加到窗体中(该窗体显示文本“请在此处输入”),同时 MainMenu 组件添加到了组件栏中。
以编程方式向 Windows 窗体添加菜单
- 在代码编辑器中,创建一个新公共方法,其中包含将菜单添加到窗体的代码。有关打开代码编辑器的更多信息,请参见在设计器中显示 Windows 窗体。
' Visual Basic Public Sub AddMenu() End Sub // C# public void AddMenu(){ } // C++ public: void AddMenu() { }
- 在该方法内添加类似于以下内容的代码,以创建 MainMenu 组件的实例:
' Visual Basic Dim mnuFileMenu as New MainMenu() Me.Menu = mnuFileMenu // C# MainMenu mnuFileMenu = new MainMenu(); this.Menu = mnuFileMenu; // C++ MainMenu *mnuFileMenu = new MainMenu(); this->Menu = mnuFileMenu;
将 MainMenu 组件添加到 Windows 窗体后,需要向其添加菜单项。菜单设计器可让您在设计时向菜单组件添加菜单项。菜单内容保存在一个集合内,所以可在运行时通过向此集合添加 MenuItem 对象来向菜单添加菜单项。
在设计时向菜单添加菜单项
- 单击 Windows 窗体上的 MainMenu 组件。
显示文本“请在此处输入”。
- 单击显示的文本,然后键入所需菜单项的名称以添加它。
- 若要添加另一个菜单项,请单击“菜单设计器”内的另一个“请在此处输入”区域。
- 单击当前菜单项右侧的区域以添加子菜单。
- 或 -
- 单击当前菜单项下方的区域,以便将另一个项添加到同一菜单中。
- 单击当前菜单项右侧的区域以添加子菜单。
以编程方式向菜单添加菜单项
- 如果还没有 MainMenu 组件,则向公共方法内的 Windows 窗体添加一个 MainMenu 组件,并将一个 MainMenu 类的实例分配给该窗体的Menu 属性。有关集合的更多信息,请参见对象之间的关系。
' Visual Basic Public Sub AddMenuAndItems() Dim mnuFileMenu as New MainMenu() Me.Menu = mnuFileMenu End Sub // C# public void AddMenuAndItems(){ MainMenu mnuFileMenu = new MainMenu(); this.Menu = mnuFileMenu; } // C++ public: void AddMenu() { MainMenu *mnuFileMenu = new MainMenu(); this->Menu = mnuFileMenu; }
- 在该方法内,创建要添加到 MainMenu 对象的集合中的 MenuItem 对象:
' Visual Basic Dim myMenuItemFile as New MenuItem("&File") Dim myMenuItemNew as New MenuItem("&New") // C# MenuItem myMenuItemFile = new MenuItem("&File"); MenuItem myMenuItemNew = new MenuItem("&New"); // C++ MenuItem *myMenuItemFile = new MenuItem(S"&File"); MenuItem *myMenuItemNew = new MenuItem(S"&New");
注意 默认情况下, MainMenu 对象不包含菜单项,所以添加的第一个菜单项成为菜单标题。这就是
myMenuItemFile
的 Text属性设置为&File
的原因。 - 在该方法内,分配顶级菜单项并向其添加后面的菜单项:
' Visual Basic mnuFileMenu.MenuItems.Add(myMenuItemFile) myMenuItemFile.MenuItems.Add(myMenuItemNew) // C# mnuFileMenu.MenuItems.Add(myMenuItemFile); myMenuItemFile.MenuItems.Add(myMenuItemNew); // C++ mnuFileMenu->MenuItems->Add(myMenuItemFile); myMenuItemFile->MenuItems->Add(myMenuItemNew);
注意 若要创建子菜单,可将 MenuItem 对象添加到父 MenuItem 的 MenuItems 属性中。对于上面的示例,如果希望将第三个菜单项 (
myMenuItemFolder
) 作为第二个菜单项 (myMenuItemNew
) 的子菜单添加,则应包括下列代码行:' Visual Basic Dim myMenuItemFolder as New MenuItem("&Folder") myMenuItemNew.MenuItems.Add(myMenuItemFolder) // C# MenuItem myMenuItemFolder = new MenuItem("&Folder"); myMenuItemNew.MenuItems.Add(myMenuItemFolder); // C++ MenuItem *myMenuItemFolder = new MenuItem(S"&Folder"); myMenuItemNew->MenuItems->Add(myMenuItemFolder);
菜单项也可在创建时动态添加,属性也是这样,可在创建和添加菜单项时设置。例如,若要向上面的集合中添加第四个菜单项,请输入下列代码:
' Visual Basic mnuFileMenu.MenuItems.Add("Save &As") // C# mnuFileMenu.MenuItems.Add("Save &As"); // C++ mnuFileMenu->MenuItems->Add("Save &As");
有关向 MenuItems 集合中添加菜单项时动态创建菜单项的更多信息,请参见 Menu.MenuItemCollection 类。
向菜单项添加功能
最后,建立菜单结构后,需要为菜单项提供功能。通常需要通过 MenuItem.Click 事件的事件处理程序做到这一点。有关事件处理程序的更多信息,请参见 Windows 窗体中事件处理程序的介绍。