Один contextMenuStrip для разных форм

Вариант размещения одного contextMenuStrip на разных формах для разных элементов.

В основном пространстве имен добавляем класс с contextMenuStrip:
namespace TestContextMenu
{
    static class Program
    {
        /// <summary>
        /// The main entry point for the application.
        /// </summary>
        [STAThread]
        static void Main()
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(new Form1());
        }

    }
    static class Menushki
    {
        public static ContextMenuStrip menu1 = new ContextMenuStrip();
       
        
    }
}
В нашем случае это класс Menushki

Затем при загрузке приложения, создаем саму менюшку, можно программно задать все элементы и параметры, но на мой взгляд проще сделать конструктором и при загрузке первой формы просто назначить:
private void Form1_Load(object sender, EventArgs e)
        {
            Menushki.menu1 = contextMenuStrip1;
        }


Далее если надо использовать это меню в любой форме просто при загрузке формы ассоциируем это меню с необходимым элементом. Можно и менять его из любой формы:
private void Form2_Load(object sender, EventArgs e)
        {
            this.ContextMenuStrip = Menushki.menu1;
        }


Вот так это выглядит в примере:
contextMenuStrip в C-шарп

Скачать пример: TestContextMenu.rar


3 комментария

avatar
А как его активировать в Form1?
Выставляю в Form1 contextMenuStrip1 для свойства contextMenuStrip, а меню не работает
avatar
Вот так:
private void Form1_Load(object sender, EventArgs e)
        {
            Menushki.menu1 = contextMenuStrip1;
            //Вот эту строчку добавить надо.
            this.ContextMenuStrip = Menushki.menu1;
        }
avatar
ХМ.
Пробовал, не работало, но когда создал проект снуля, заработало!
Может из-за разных версий студии.
Большое Спасибо!!!
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.