向 Windows 窗体添加菜单和菜单项

本文详细介绍了在Windows窗体上使用MainMenu对象创建菜单的方法,包括设计时添加菜单、编程方式添加菜单以及如何在设计时和编程方式下向菜单添加菜单项。还解释了如何为菜单项添加功能并通过事件处理程序实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Windows 窗体上的菜单是使用 MainMenu 对象创建的,该对象是一个 MenuItem 对象集合。可以在设计时向 Windows 窗体添加菜单,方法是添加MainMenu 组件然后使用菜单设计器向其追加菜单项。还可以用编程方法添加菜单,方法是向 Windows 窗体添加一个或多个 MainMenu 对象并向该集合中添加 MenuItem 对象。本主题中的过程说明如何使用菜单设计器或代码创建一个名为 File 的简单菜单。

在设计时向 Windows 窗体添加菜单

  1. 在 Windows 窗体设计器中打开要将菜单添加到的窗体。
  2. 在“工具箱”中双击 MainMenu 组件。

    一个菜单被添加到窗体中(该窗体显示文本“请在此处输入”),同时 MainMenu 组件添加到了组件栏中。

以编程方式向 Windows 窗体添加菜单

  1. 在代码编辑器中,创建一个新公共方法,其中包含将菜单添加到窗体的代码。有关打开代码编辑器的更多信息,请参见在设计器中显示 Windows 窗体
    ' Visual Basic
    Public Sub AddMenu()
    
    End Sub
    
    // C#
    public void AddMenu(){
    
    }
    
    // C++
    public:
       void AddMenu()
       {
    
       }
    
  2. 在该方法内添加类似于以下内容的代码,以创建 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 对象来向菜单添加菜单项。

在设计时向菜单添加菜单项

  1. 单击 Windows 窗体上的 MainMenu 组件。

    显示文本“请在此处输入”。

  2. 单击显示的文本,然后键入所需菜单项的名称以添加它。
  3. 若要添加另一个菜单项,请单击“菜单设计器”内的另一个“请在此处输入”区域。
    • 单击当前菜单项右侧的区域以添加子菜单。

      - 或 -

    • 单击当前菜单项下方的区域,以便将另一个项添加到同一菜单中。

以编程方式向菜单添加菜单项

  1. 如果还没有 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;
       }
    
  2. 在该方法内,创建要添加到 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 的原因。
  3. 在该方法内,分配顶级菜单项并向其添加后面的菜单项:
    ' 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 窗体中事件处理程序的介绍

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值