43

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

有没有一种方法可以在我的 Windows 窗体应用程序中添加一个菜单栏,该菜单栏看起来与您在记事本、任务管理器等中看到的相同?(最好与设计师一起,但我也不介意以编程方式添加它。)

截图说明:

4

4 回答 4

66

转到您的工具箱,右键单击内部任意位置,然后选择“选择项目”。

当对话框加载并出现时,向下滚动直到看到 MainMenu。将其添加到工具箱中,您就拥有了一个原生菜单栏!

于 2010-05-06T03:33:10.430 回答
23

您可以通过设置表单的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
}

这些菜单看起来像“普通”系统菜单。

不过,我找不到任何设计师对此的支持。在我的辩护中,我并没有真正努力。

于 2010-05-06T03:16:03.477 回答
8

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

原生渲染器

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

menuStrip.Renderer = new NativeRenderer([theme]);
于 2012-12-03T20:04:51.430 回答
4

我通常将 MenuStrip 设置为RenderMode提供System简约的单色菜单(没有渐变或任何类似的颓废)。

如果这还不够远,那么您可能不得不跳过一些低级别的箍来获得您想要的东西。

于 2010-05-06T03:07:42.380 回答