如何找到引发事件的控件

She*_*hen 0 c# winforms

我的主窗体上有许多自定义控件,它们利用事件来表示它们已经完成了处理.他们都分享同样的事件(约100个控件左右).

主窗体消耗此事件,但我不知道如何找到一种有效的方法来获取引发事件而没有真正低效的代码.

我的控件包含在一个List<T>被调用的控件中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
                {
                    ...
                }
            }
        }        
    }
Run Code Online (Sandbox Code Playgroud)

如果我想使用较少的控件,我会使它们不可见并禁用,因此control.Visible.

我怎样才能这样做,所以我只对引发事件的一个控件进行工作而不必处理那么多不需要的迭代?

Dom*_*Dom 8

sender参数是引发事件的对象.您可以将其强制转换为控件.