获取事件的控件名称

时间:2011-10-04 06:41:00

标签: c# winforms event-handling

在我的C#Windows窗体表单中,我有一些动态生成的按钮。我在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 个答案:

答案 0 :(得分:32)

您可以使用sender参数。这就是提升点击事件的Control(在这种情况下是按钮):

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

N.B。:如果您已将其他控件(例如面板等)订阅到同一事件处理程序,则可以使用as运算符检查发件人是否为按钮:

var button = sender as Button;
if (button != null)
{
    button.Name ...
    ...
}

答案 1 :(得分:3)

event handler的第一个参数“object sender”包含引发/触发事件的对象/控件的引用。

var button = sender as Button;