C# 获取对控件执行的事件

C# 获取对控件执行的事件,c#,winforms,event-handling,C#,Winforms,Event Handling,我希望得到一些帮助 在我的应用程序中,我有一个文本框,在单击任何控件时,该文本框应显示该控件中发生的事件 对于exmaple,如果我单击应用程序中的按钮或复选框,文本框应标识事件并显示为button1.clicked,checkbox1.checked之类的内容 谁能帮我完成这件事 提前感谢。:如果您想为所有控件动态执行此操作,您可以在控件树中导航,并为如下所示的事件订阅相同的事件处理程序,如果设置了预定义控件,基本上只需为相同的偶数处理程序订阅所有控件即可 预定义控件集 checkBox1.C

我希望得到一些帮助

在我的应用程序中,我有一个文本框,在单击任何控件时,该文本框应显示该控件中发生的事件

对于exmaple,如果我单击应用程序中的按钮或复选框,文本框应标识事件并显示为button1.clicked,checkbox1.checked之类的内容

谁能帮我完成这件事


提前感谢。:

如果您想为所有控件动态执行此操作,您可以在控件树中导航,并为如下所示的事件订阅相同的事件处理程序,如果设置了预定义控件,基本上只需为相同的偶数处理程序订阅所有控件即可

预定义控件集

checkBox1.CheckedChanged += (s, e) => { /*  handles Checked state changes*/ };
button1.Click += (s, e) => { /*  handles button click */ };
动态

private void InitializeHooks()
{
    foreach(var control in this.Controls)
    {
       var button = control as Button;
       if (button != null)
       {
          button.Click += OnClick;
          continue;
       }

       var checkBox = control as CheckBox;
       if (checkBox != null)
       {
          checkBox.CheckedChanged += OnCheckedChanged;
       }       
    }
}

// Button click handler
private void OnClick(object sender, EventArgs eventArgs)
{
   txtOutput.Text = String.Format(
                                CultureInfo.CurrentCulture,
                                "{Control Type: {0}, Name: {1}, Event: Click",
                                sender.GetType().Name,
                                sender.Id);
}

// Checkbox Checked state changed handler
private void OnCheckedChanged(object sender, EventArgs eventArgs)
{
     txtOutput.Text = String.Format(
                                CultureInfo.CurrentCulture,
                                "{Control Type: {0}, Name: {1}, Event: CheckedChanged",
                                sender.GetType().Name,
                                sender.Id);

}

它在WPF/WinForms下吗?难道你不能在按钮点击事件处理程序中设置文本框文本吗?这就是你要找的吗