Windows窗体中的标准Windows菜单栏

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

有没有办法添加一个菜单栏到我的Windows窗体应用程序,看起来像记事本,任务pipe理器和其他人看到相同? (最好与devise师,但我不介意以编程方式添加它)。

插图的屏幕截图:

这很容易。

转到您的工具箱,右键单击任何地方,然后选择“选择项目”。 当对话框加载并出现时,向下滚动直到看到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:

NativeRenderer

在渲染器的构造函数中可以应用不同的主题。 尝试一下,看看原生主题。 要使用此渲染器,只需将实例设置为“ MenuStrip渲染器”属性即可:

 menuStrip.Renderer = new NativeRenderer([theme]); 

我通常将MenuStrip的RenderMode设置为System ,它提供了一个简约的单色菜单(没有渐变或任何颓废的东西)。

如果这还不够,那么你可能需要跳过一些低级别的箍来得到你想要的。