我希望得到一些帮助。
在我的应用程序中,我有一个文本框,它应该显示在单击任何控件时发生的事件。
例如,如果我点击应用程序中的按钮或复选框,文本框应该识别事件并显示为button1。点击,checkbox1。检查过的东西
谁能帮我把这件事做完吗?
如果你想动态地为所有控件做这件事,你可以浏览控件树并为下面所示的事件订阅相同的事件处理程序,在预定义控件设置的情况下,基本上只是为相同的偶数处理程序订阅所有控件。
预定义控件集
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);
}