Урок 8. Работаем с меню
Автор: admin | 20 Июнь 2008 – 19:32 -Урок 8. Работаем с меню
Сейчас мы с вами рассмотрим, как использовать меню (а точнее, главное меню – экземпляр класса MainMenu) в программах на C#. Главное, что мы сделаем – это динамическое добавление пунктов меню и обработчиков для них.
Программа наша будет работать так – при нажатии на кнопку (а это будет единственная кнопка на форме) в главное меню будет добавляться еще один подпункт. Текст на этом подпункте будет очередное число (“1″, “2″, …). При выборе любого пункта меню будет появляться messagebox с текстом, совпадающим с текстом на нажатом пункте меню.
Итак, создайте новый Windows-проект, разместите на форме кнопку и добавьте MainMenu из окна Toolbox.
MainMenu добавится не на саму форму, а ниже (и это логично, так как мы не можем задать точного положения главного меню на форме – x и y, например; так что и особого смысла в расположении на самой форме нет). В меню задайте имя самого первого пунта как “Menu”.
Теперь приступаем к коду.
Во-первых, добавим в класс переменную-счетчик и присвоим ей начальное значение:
public int num = 0;
Эта переменная будет увеличиваться на единицу при добавлении каждого нового пункта меню.
Теперь напишем обработчик для нажатия кнопки. Текст обработчика будет следующий:
private void button1_Click(object sender, System.EventArgs e) { // Увеличиваем счетчик пунктов меню. num++; // Создаем новый подпункт меню. // Для него задаем надпись // и обработчик выбора пользователем этого пункта. MenuItem mi = new MenuItem(num.ToString(), new System.EventHandler(this.menuItem_Click)); // Подсоединяем новый пункт меню к главному меню формы. mainMenu1.MenuItems[0].MenuItems.Add(mi); }
Обратите внимание, что в качаестве имени обработчика мы задали menuItem_Click. Разумеется, функцию с таким именем мы должны добавить в класс формы:
private void menuItem_Click(object sender, System.EventArgs e) { // Читаем текст на выбранном пользователе пункте меню. string s = ((MenuItem)sender).Text; // Выводим этот текст. MessageBox.Show(s); }
Посмотрите, как мы тут выясняем, какой пункт меню обрабатывается (а эта функция является обработчиком для всех пунктов нашего меню) – мы просто берем у передаваемого в функцию параметра sender свойство Text (предварительно мы приводим наш параметр к типу MenuItem):
...
string s = ((MenuItem)sender).Text;
...
Все! Компилируем и запускаем программу. Сколько раз мы нажмем на кнопку на форме, столько у нас появится новых подпунктов для меню.
И при выборе соответствующего пункта меню появится messagebox с соответствующим тестом, совпадающим с текстом на пункте меню.
Tags: button, EventHandler, MainMenu, menuItem, MessageBox, public, string, System, Toolbox, ToString
Находится в Windows и C# | No Comments »
Ответить
Вы должны быть в системе, дабы комментировать.
