Получение имени элемента управления для события - PullRequest
6 голосов
/ 04 октября 2011

В моей форме C # Windows Forms у меня есть несколько кнопок, которые генерируются динамически. Я назначил следующий метод для события click. Можно ли получить название кнопки, с которой происходит событие?

private void btnBrowsDoc_Click(object sender, EventArgs e)
{
    try
    {
        if (openFileDialog1.ShowDialog().Equals(DialogResult.OK))
        {
            gbxDocument.Controls["txtDocument" + count].Text =
                openFileDialog1.FileName;
        }
        else
        {
            return;
        }
    }
    catch (Exception ex)
    {
        //handle the exception
    }
}

Ответы [ 2 ]

32 голосов
/ 04 октября 2011

Вы можете использовать аргумент sender. Это элемент управления (в данном случае кнопка), который вызвал событие click:

var button = (Button)sender;
button.Name ...

N.B .: Если вы подписали другие элементы управления (например, панели и т. Д.) На тот же обработчик событий, вы можете проверить, является ли отправитель кнопкой, используя оператор as:

var button = sender as Button;
if (button != null)
{
    button.Name ...
    ...
}
3 голосов
/ 04 октября 2011

Первый аргумент обработчика события , "object sender", содержит ссылку на объект / элемент управления, который вызвал / вызвал событие.

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