Стандартные панели меню Windows в Windows Forms
Я заметил, что добавление MenuStrip
(из панели инструментов) в мой дизайн формы не дает панели меню, подобной той, что видна во многих родных приложениях Windows. Вместо этого я получаю панель меню, такую как Visual Studio. Ни одна из настроек стиля для MenuStrip
не кажется мне более похожей на обычную панель меню.
Есть ли способ добавить панель меню к моему приложению Windows Forms, который выглядит так же, как тот, который вы видите в "Блокноте", "Диспетчер задач" и другие? (Желательно с дизайнером, но я бы не прочь также добавить его программно).
Снимок экрана для иллюстрации:
![]()
Ответы
Ответ 1
Это легко.
Перейдите на панель инструментов, щелкните правой кнопкой мыши в любом месте и выберите "Выбрать элементы". Когда диалоговое окно загрузится и появится, прокрутите вниз, пока вы не увидите MainMenu. Добавьте это в панель инструментов, и у вас есть собственная панель меню!
Счастливое кодирование!
Ответ 2
Вы можете сделать это, установив свойство формы 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
}
Эти меню будут выглядеть как "обычные" системные меню.
Я не мог найти конструкторской поддержки для этого. В моей защите я не очень старался.
Ответ 3
Вместо использования компонента MainMenu
вы можете создать свой собственный рендерер для компонента MenuStrip
. Преимущество здесь заключается в возможности добавления изображений в объекты MenuStripItem
. Здесь используется пастик для пользовательского рендерера:
NativeRenderer
Существуют разные темы, которые могут быть применены в конструкторе рендеринга. Попробуйте все, чтобы увидеть родные темы. Чтобы использовать этот рендерер, просто установите экземпляр в свойство MenuStrip
Renderer:
menuStrip.Renderer = new NativeRenderer([theme]);
Ответ 4
Обычно я устанавливаю MenuStrip RenderMode
на System
, который дает минималистичное одноцветное меню (без градиентов или чего-то такого декадентского).
Если это не пройдет достаточно далеко, вам, вероятно, придется перепрыгнуть через несколько обручей низкого уровня, чтобы получить то, что вы хотите.