获取事件的控件名称

Nit*_*esh 6 c# event-handling winforms

在我的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
    }
}
Run Code Online (Sandbox Code Playgroud)

dig*_*All 32

你可以使用这个sender参数.这就是引发click事件的Control(在本例中为按钮):

var button = (Button)sender;
button.Name ...
Run Code Online (Sandbox Code Playgroud)

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

var button = sender as Button;
if (button != null)
{
    button.Name ...
    ...
}
Run Code Online (Sandbox Code Playgroud)


ada*_*ost 5

事件处理程序的第一个参数“ object sender”包含引发/触发事件的对象/控件的引用。

var button = sender as Button;
Run Code Online (Sandbox Code Playgroud)