代码分析给出“正确声明事件处理程序”消息

时间:2013-04-27 14:29:34

标签: c# winforms event-handling code-analysis

我刚刚在我的c#winforms项目上运行了代码分析。 我收到警告

CA1009  Declare event handlers correctly    
Declare the second parameter of    'NameEditEx.TextChanged' as an EventArgs,
 or an instance of a type that extends EventArgs, named 'e'.     

有问题的类位于包含以下内容的用户控件中;

    public delegate void TextChanged();

    [Browsable(true)]
    public event TextChanged OnTextChanged;

具有控件的表单在InitializeComponent

中具有以下代码
 this.nameEditEx1.OnTextChanged += new NameEditExLib.NameEditEx.TextChanged(this.nameEditEx1_OnTextChanged);

方法是

    private void nameEditEx1_OnTextChanged()
    {
        try
        {
            UpdateName();
        }
        catch (Exception ex)
        {
            HandleException.Show(ex);
        }

    }

运行时,代码似乎运行正常。 我应该改变代码以摆脱警告吗? 如果是这样,我该怎么做?

更新  Microsofts link

1 个答案:

答案 0 :(得分:6)

代表应该是

public delegate void TextChanged(object sender, EventArgs e);

方法应该是

private void nameEditEx1_OnTextChanged(object sender, EventArgs e)

这样做可确保与其他类型的事件保持一致,其中第一个参数是sender,第二个参数是EventArgs。

然后,您可以通过调用

来调用事件处理程序
OnTextChanged(this, EventArgs.Empty);