Windows窗体中的标准Windows菜单栏

Bol*_*ock 34 .net windows user-interface menubar winforms

我注意到MenuStrip在我的表单设计中添加一个(从工具箱中)不会产生类似于许多本机Windows应用程序中看到的菜单栏.相反,我得到了一个像Visual Studio自己的菜单栏.没有任何样式设置MenuStrip似乎模仿更常见的本机菜单栏.

有没有办法在我的Windows窗体应用程序中添加一个与您在记事本,任务管理器和其他人中看到的菜单栏相同的菜单栏?(最好是设计师,但我不介意以编程方式添加它.)

截图插图:

小智 54

这很简单.

转到您的工具箱,右键单击任何内部并选择"选择项目".加载并显示对话框时,向下滚动直至看到MainMenu.将其添加到工具箱中,您就拥有了一个原生菜单栏!

快乐的编码!

  • 我不知道这个组件.我试了一下它有*非常*限制:我无法改变设计师的颜色,不支持本地化,没有图像等.如果这是你想要的,那就去吧.有*因为它已被MenuStrip取代的原因. (6认同)
  • 哇,我不知道我可以像这样添加东西给我的工具箱.非常感谢! (3认同)

Mus*_*sis 20

您可以通过设置表单的Menu属性来执行此操作,如下所示:

private void Form1_Load(object sender, EventArgs e)
{
    this.Menu = new MainMenu();
        MenuItem item = new MenuItem("File");
        this.Menu.MenuItems.Add(item);
            item.MenuItems.Add("Save", new EventHandler(Save_Click));
            item.MenuItems.Add("Open", new EventHandler(Open_Click)); 
        item = new MenuItem("Edit");
        this.Menu.MenuItems.Add(item);
            item.MenuItems.Add("Copy", new EventHandler(Copy_Click));
            item.MenuItems.Add("Paste", new EventHandler(Paste_Click)); 
        // etc ...
}

private void Save_Click(object sender, EventArgs e)
{
    // save
}
Run Code Online (Sandbox Code Playgroud)

这些菜单看起来像"普通"系统菜单.

但是,我找不到任何设计师支持.在我的辩护中,我并没有真正努力.


Cri*_*lin 8

MainMenu您可以为组件创建自己的渲染器,而不是使用该MenuStrip组件.这里的优点是能够向MenuStripItem对象添加图像.以下是自定义渲染器的pastebin:

NativeRenderer

可以在渲染器的构造函数中应用不同的主题.尝试全部查看原生主题.要使用此渲染器,只需将实例设置为MenuStripRenderer属性:

menuStrip.Renderer = new NativeRenderer([theme]);
Run Code Online (Sandbox Code Playgroud)