我注意到MenuStrip
在我的表单设计中添加(从工具箱中)不会产生像在许多本机 Windows 应用程序中看到的那样的菜单栏。相反,我得到了一个类似于 Visual Studio 自己的菜单栏。的样式设置MenuStrip
似乎都没有模仿更常见的本机菜单栏。
有没有一种方法可以在我的 Windows 窗体应用程序中添加一个菜单栏,该菜单栏看起来与您在记事本、任务管理器等中看到的相同?(最好与设计师一起,但我也不介意以编程方式添加它。)
截图说明:
我注意到MenuStrip
在我的表单设计中添加(从工具箱中)不会产生像在许多本机 Windows 应用程序中看到的那样的菜单栏。相反,我得到了一个类似于 Visual Studio 自己的菜单栏。的样式设置MenuStrip
似乎都没有模仿更常见的本机菜单栏。
有没有一种方法可以在我的 Windows 窗体应用程序中添加一个菜单栏,该菜单栏看起来与您在记事本、任务管理器等中看到的相同?(最好与设计师一起,但我也不介意以编程方式添加它。)
截图说明:
转到您的工具箱,右键单击内部任意位置,然后选择“选择项目”。
当对话框加载并出现时,向下滚动直到看到 MainMenu。将其添加到工具箱中,您就拥有了一个原生菜单栏!
您可以通过设置表单的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
}
这些菜单看起来像“普通”系统菜单。
不过,我找不到任何设计师对此的支持。在我的辩护中,我并没有真正努力。
MainMenu
您可以为组件创建自己的渲染器,而不是使用MenuStrip
组件。这里的优点是能够将图像添加到MenuStripItem
对象。这是自定义渲染器的 pastebin:
可以在渲染器的构造函数中应用不同的主题。全部尝试以查看原生主题。要使用此渲染器,只需将实例设置为MenuStrip
Renderer 属性:
menuStrip.Renderer = new NativeRenderer([theme]);
我通常将 MenuStrip 设置为RenderMode
提供System
简约的单色菜单(没有渐变或任何类似的颓废)。
如果这还不够远,那么您可能不得不跳过一些低级别的箍来获得您想要的东西。