我刚刚在我的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);
}
}
运行时,代码似乎运行正常。 我应该改变代码以摆脱警告吗? 如果是这样,我该怎么做?
答案 0 :(得分:6)
代表应该是
public delegate void TextChanged(object sender, EventArgs e);
方法应该是
private void nameEditEx1_OnTextChanged(object sender, EventArgs e)
这样做可确保与其他类型的事件保持一致,其中第一个参数是sender,第二个参数是EventArgs。
然后,您可以通过调用
来调用事件处理程序OnTextChanged(this, EventArgs.Empty);