Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Передача параметров обработчику события, Как передать параметр? 
V
    Опции темы
href
  Дата 13.3.2009, 16:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 42
Регистрация: 25.10.2006
Где: Moscow

Репутация: нет
Всего: нет



Воюю в c# с ContextMenu. Создаю в нём MenuItem'ы и хочу, чтобы при клике на любом из них вызывалась одна и та же функция, а какой именно из MenuItem'ов нажат определять через параметр этой функции.

Подскажите, пожалуйста, как это можно сделать, ведь стандартный синтаксис обработчика выглядит как:

tmpMenuItem.Click += new EventHandler(MenuItem_click);

и не позволяет передавать параметры. Как быть?

Это сообщение отредактировал(а) href - 13.3.2009, 17:07
PM MAIL WWW ICQ Skype GTalk   Вверх
DVariuS
Дата 13.3.2009, 16:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 200
Регистрация: 10.2.2009
Где: Ukraine

Репутация: 2
Всего: 8



Цитата(href @ 13.3.2009,  15:21)
tmpMenuItem.Click += new EventHandler(MenuItem_click);

Этим кодом Вы назначаете обработчик MenuItem_click событию Click.
Далее необходимо написать обработчик:
Код

private void MenuItem_click(object sender, EventArgs e)
{
//код обработчика
}

Здесь параметр sender - объект, возбуждающий событие.
PM MAIL   Вверх
href
Дата 13.3.2009, 16:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 42
Регистрация: 25.10.2006
Где: Moscow

Репутация: нет
Всего: нет



Цитата

Этим кодом Вы назначаете обработчик MenuItem_click событию Click.


Это-то понятно. Непонятно как мне для MenuItem_click передать свою переменную.
PM MAIL WWW ICQ Skype GTalk   Вверх
PashaPash
Дата 13.3.2009, 17:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1233
Регистрация: 3.1.2008

Репутация: 9
Всего: 49



href, прописываешь своим менюайтемам разный Tag. Потом в обработчике делаешь object tag = ((MenuItem)sender).Tag...


--------------------
PM MAIL WWW   Вверх
diadiavova
Дата 13.3.2009, 20:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доктор Зло(диагност, настоящий, с лицензией и полномочиями)
****


Профиль
Группа: Модератор
Сообщений: 5821
Регистрация: 14.8.2008
Где: В Коньфпольте

Репутация: 18
Всего: 142



Цитата(href @  13.3.2009,  16:21 Найти цитируемый пост)
Воюю в c# с ContextMenu. Создаю в нём MenuItem'ы и хочу, чтобы при клике на любом из них вызывалась одна и та же функция, а какой именно из MenuItem'ов нажат определять через параметр этой функции.

Просто надо назначить всем MenuItem'мам один обработчик, а какой из них кликнут определять по параметру sender. Если же "кровь с носа" надо, чтобы обработка производилась в методе, имеющем другую сигнатуру, то надо создать этот метод и вызвать его из обработчика кликов(передав нужные аргументы)...Правда не очень понятно зачем это надо.
Код

void initMenu()
{
    foreach(MenuItem itm in myMenu.MenuItems)
        {
             itm.Click += new EventHandler(MenuItem_click);
        }
}

private void MenuItem_click(object sender, EventArgs e)
{
        MyClickHandler((MenuItem)sender);
}

void MyClickHandler(MenuItem item)
{
//здесь разместить код обработчика
//параметр укажет отправителя события

}




--------------------
Хочешь получить мудрый совет - читай подписи участников форумов.
Злой доктор Щасзаболит smile
PM   Вверх
href
  Дата 14.3.2009, 01:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 42
Регистрация: 25.10.2006
Где: Moscow

Репутация: нет
Всего: нет



PashaPash, спасибо! Так и поступил — помогло   smile  

Это сообщение отредактировал(а) href - 14.3.2009, 01:15
PM MAIL WWW ICQ Skype GTalk   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
Partizan
PashaPash

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, Partizan, PashaPash.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | .NET для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0449 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.