Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/294.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 获取事件的控件名_C#_Winforms_Event Handling - Fatal编程技术网

C# 获取事件的控件名

C# 获取事件的控件名,c#,winforms,event-handling,C#,Winforms,Event Handling,在我的C#Windows窗体中,我有一些动态生成的按钮。我在单击事件上指定了以下方法。是否可以获取触发事件的按钮的名称 private void btnBrowsDoc_Click(object sender, EventArgs e) { try { if (openFileDialog1.ShowDialog().Equals(DialogResult.OK)) { gbxDocument.Controls["txtDo

在我的C#Windows窗体中,我有一些动态生成的按钮。我在单击事件上指定了以下方法。是否可以获取触发事件的按钮的名称

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
    }
}

您可以使用
sender
参数。这就是引发单击事件的控件(本例中的按钮):

var button = (Button)sender;
button.Name ...
注意:如果您向同一事件处理程序订阅了其他控件(如面板等),则可以使用
as
操作符检查发送者是否是按钮:

var button = sender as Button;
if (button != null)
{
    button.Name ...
    ...
}
对象发送器”
”的第一个参数包含引发/触发事件的对象/控件的引用

var button = sender as Button;

为什么
要尝试…捕获
?-这通常是一种相当糟糕的编程风格,尤其是当您不计算捕获的异常时。@Uwe Keim:am使用文本文件处理异常。。。我只是在这里添加时删除了那行代码……在N.B.部分,我认为最好检查'is'参数,然后执行操作。否则,无法再次强制转换发件人。e、 如果(发送者是按钮)返回(发送者是按钮)。名称;else if(发送方为面板)返回(发送方为面板)。名称;大卫·法利:这真的取决于你需要什么。如果您只需要检查是否是一个按钮,我会坚持使用
作为
,但这是一个偏好问题