2

我刚刚对我的 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);
        }

    }

当我运行它时,代码似乎工作正常。我应该更改代码以消除警告吗?如果是这样,我该怎么做?

更新 微软的链接

4

1 回答 1

6

代表应该是

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

方法应该是

private void nameEditEx1_OnTextChanged(object sender, EventArgs e)

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

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

OnTextChanged(this, EventArgs.Empty);
于 2013-04-27T14:48:59.307 回答