C# 如何查找引发事件的控件
我的主窗体上有许多自定义控件,它们利用事件表示它们已完成处理。它们都共享同一事件(大约100个控件) 主窗体使用这个事件,但我不知道如何找到一种有效的方法,在没有真正低效的代码的情况下到达引发事件的窗体 我的控件包含在名为C# 如何查找引发事件的控件,c#,winforms,C#,Winforms,我的主窗体上有许多自定义控件,它们利用事件表示它们已完成处理。它们都共享同一事件(大约100个控件) 主窗体使用这个事件,但我不知道如何找到一种有效的方法,在没有真正低效的代码的情况下到达引发事件的窗体 我的控件包含在名为controlList的列表中,并托管在它们自己的项目中 我的活动看起来是这样的: public void OnTaskComplete(object sender, custom_control_project.TaskCompleteEventArgs e) {
controlList
的列表中,并托管在它们自己的项目中
我的活动看起来是这样的:
public void OnTaskComplete(object sender, custom_control_project.TaskCompleteEventArgs e)
{
foreach (var control in controlList)
{
if (control.Visible) // <--- THIS IS WRONG! WHAT COULD THIS BE???
{
try
{
...// LOTS OF PROCESSING!
}
catch
{
...
}
finally
{
...
}
}
}
}
public void OnTaskComplete(对象发送方,自定义控制项目.TaskCompleteEventArgs e)
{
foreach(控制器中的var控制)
{
如果(control.Visible)//发送方参数是引发事件的对象。您可以将其强制转换为控件。假设所有控件都连接到同一事件(您指出):
您需要将发送方
强制转换为常见的基本类型。如果使用基本类型,网络控制
将允许您访问启用的
属性,而控制
将不允许。非常简单……感谢您的快速响应
protected void Button1_Click(object sender, EventArgs e)
{
((Button)sender).Visible = true;
// or more generally:
((WebControl)sender).Visible = true;
}