Подтвердить что ты не робот

Стандартные панели меню Windows в Windows Forms

Я заметил, что добавление MenuStrip (из панели инструментов) в мой дизайн формы не дает панели меню, подобной той, что видна во многих родных приложениях Windows. Вместо этого я получаю панель меню, такую ​​как Visual Studio. Ни одна из настроек стиля для MenuStrip не кажется мне более похожей на обычную панель меню.

Есть ли способ добавить панель меню к моему приложению Windows Forms, который выглядит так же, как тот, который вы видите в "Блокноте", "Диспетчер задач" и другие? (Желательно с дизайнером, но я бы не прочь также добавить его программно).

Снимок экрана для иллюстрации:

4b9b3361

Ответ 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, который дает минималистичное одноцветное меню (без градиентов или чего-то такого декадентского).

Если это не пройдет достаточно далеко, вам, вероятно, придется перепрыгнуть через несколько обручей низкого уровня, чтобы получить то, что вы хотите.