Получить имя метода вызова управления - PullRequest
2 голосов
/ 21 апреля 2010

Моя форма имеет несколько числовых элементов управления вверх-вниз. Все эти элементы управления при изменении вызывают один и тот же метод:

    private void SetColors(object sender, EventArgs e)

Как определить, какой элемент управления вызвал метод?

Ответы [ 2 ]

10 голосов
/ 21 апреля 2010

Для этого и нужен параметр sender.

Если вы знаете время, вы можете разыграть его соответствующим образом:

NumericUpDownControl control = (NumericUpDownControl) sender;

Если это может быть один из нескольких типов, вы можете использовать as и нулевой тест или is с последующим приведением.

Конечно, вам нужно приводить только к тому типу, который содержит нужные вам члены - так что вы потенциально можете просто привести к Control, например.

РЕДАКТИРОВАТЬ: Предположим, вы просто хотите имя, и вы знаете, что отправитель всегда будет какой-то контроль. Вы можете использовать:

private void SetColors(object sender, EventArgs e)
{
    Control control = (Control) sender;
    String name = control.Name;
    // Use the name here
}
2 голосов
/ 21 апреля 2010

Элемент управления, по которому произошло событие, сохраняется в переменной sender. Вам просто нужно привести его к исходному типу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...