2012-05-30 2 views
1

У меня есть приложение с моими ярлыками, написанными для централизации, когда его текст был изменен.Определить, кто вызывает обработчик событий

Чтобы сделать это, я вызываю метод через EventHandler. Я хочу использовать один и тот же метод для каждого из моих ярлыков, но я не знаю, как идентифицировать метод, который вызывает его.

Если у меня есть такой код:

 lbl_TextChanged(object sender, EventArgs e) 
     { 
      ..code.. 
      label1.Location = new Point("label's location"); 
      ..more code.. 
     } 

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

РЕШЕНИЕ Спасибо за помощь. Это первый случай, когда я пытался что-то сделать с обработчиком событий и не знал, что мне нужно отправить отправителя. Это решает мою проблему.

Спасибо за помощь!

+0

дублируют http://stackoverflow.com/questions/1506815/how-do-i-identify-which-control-generated-the-click-event – eyossi

ответ

3

Объект в сигнатуре обработчика события - это элемент управления, который поднял событие.

Просто введите этот объект, и у вас есть доступ ко всей информации управления.

Label label = sender as Label; 

Вам нужно быть немного осторожным с этим, так как вы в предположении, что только элементы управления типа Label поднимают события, которые имеют этот метод обработчика.

1

Вот что sender для:

Point p = ((Label)sender).Location; 
// adjust p 
label1.Location = p; 
Смежные вопросы