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

Kir*_*eed 2 c# code-analysis event-handling winforms

我刚刚在我的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'.     
Run Code Online (Sandbox Code Playgroud)

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

    public delegate void TextChanged();

    [Browsable(true)]
    public event TextChanged OnTextChanged;
Run Code Online (Sandbox Code Playgroud)

对其具有控件的表单在InitializeComponent中具有以下代码

 this.nameEditEx1.OnTextChanged += new NameEditExLib.NameEditEx.TextChanged(this.nameEditEx1_OnTextChanged);
Run Code Online (Sandbox Code Playgroud)

方法是

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

    }
Run Code Online (Sandbox Code Playgroud)

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

更新 微软链接

Jeo*_*uan 6

代表应该是

public delegate void TextChanged(object sender, EventArgs e);
Run Code Online (Sandbox Code Playgroud)

方法应该是

private void nameEditEx1_OnTextChanged(object sender, EventArgs e)
Run Code Online (Sandbox Code Playgroud)

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

然后,您可以通过调用来调用事件处理程序

OnTextChanged(this, EventArgs.Empty);
Run Code Online (Sandbox Code Playgroud)