Отправляет email-рассылки с помощью сервиса Sendsay

Финансы. Инструкция

  Все выпуски  

Уроки по C# и .NET.


Информационный Канал Subscribe.Ru

Уроки по C#. Рассылки сайта progs.biz
Выпуск № 71
 
Начало > C# > Windows > Урок 23

Джонсон Б., Скибо К., Янг М. Основы Microsoft Visual Studio.NET 2003.
Джонсон Б., Скибо К., Янг М. Основы Microsoft Visual Studio.NET 2003
Заказать на Озоне

Подробнее


Полные версии уроков (с картинками): урок 23.

C# для Windows
Урок 23. Как отобразить одно контекстное для нескольких элементов управления?

Для отображениения одного контекстного меню для различных элементов управления на форме не надо для каждого из них писать свой обработчик для щелчка мыши - достаточно написать один обработчик на все элементы управления. Кроме того (и это достаточно очевидный шаг) надо для каждого элемента управления установить свойство ContextMenu равным имени нашего контекстного меню.

Приведем конкретный пример.

Создайте обычное Windows-приложение. Добавьте на форрму несколько элементов управления. Пусть это для определенности будут label, textbox и кнопка. Кроме того, добавьте на форму элемент управления ContextMenu, к которому добавьте парочку пунктов - Item 1 и Item 2. При желании можно добавить и обработчики для данных пунктов меню.

В обработчик для загрузки формы добавьте следующий код:

        private void Form1_Load(object sender, System.EventArgs e)
        {
            // Для каждого элемента управления
            foreach (Control c in Controls)
            {
                // задаем контекстное меню.
                c.ContextMenu = contextMenu1;
                // Указываем для каждого элемента
                // обработчик для правой кнопки мыши.
                c.MouseDown += 
                    new MouseEventHandler(this.ShowPopupMenu);
            }
        }

Смысл кода достаточно ясен из комментариев - перебираем все элементы управления на форме и для каждого задаем контекстное меню и обработчик для правой кнопки мыши.

Остается добавить сам обработчик для нажатия кнопки мыши. Вот его код:

        private void ShowPopupMenu(object sender,
            System.Windows.Forms.MouseEventArgs e)
        {
            // Если нажата правая кнопка мыши.
            if(e.Button == MouseButtons.Right)
            {
                Control c = (Control)sender;
                // Если контекстное меню у элемента существует,
                if(c.ContextMenu != null)
                {
                    // то показываем его.
                    c.ContextMenu.Show(c, new Point(e.X, e.Y));
                }
            }
        }

Обратите внимание, что обработчик мы назвали ShowPopupMenu - точно также, как имя метода, заданного при загрузке формы:

    ...
    c.MouseDown += new MouseEventHandler(this.ShowPopupMenu);
    ...

Компилируем и запускаем программу. Получаем ожидаемый нами результат.

Рассылки сайта progs.biz
Visual C++, MFC
C# и .NET
VB.NET
ASP.NET new!
Win API
C/C++
Delphi
Java
HTML, PHP, mySQL, WEB-дизайн
Flash MX
C++ Builder
Ассемблер
SQL Server
DirectX
Обзор книг
Обзор программ
Новости сайта progs.biz


PARKING.RU. Качественный ВИРТУАЛЬНЫЙ ХОСТИНГ на платформе Windows(r): поддержка NET, многофункциональная панель управления, аренда бизнес-приложений, сертифицированные специалисты. Управляемый ВЫДЕЛЕННЫЙ ХОСТИНГ на платформе Windows(r): производительные серверы, профессиональная поддержка, аренда ПО Microsoft(r), безопасность, гарантии. http://www.parking.ru


Копирование любых материалов сайта без разрешения авторов и владельцев сайта запрещено.
© 2002-2005 сайт progs.biz
© 2002-2005 Алексеев Игорь

http://subscribe.ru/
http://subscribe.ru/feedback/
Подписан адрес:
Код этой рассылки: comp.soft.prog.csharplessons
Отписаться

В избранное