我遇到了VS2012设计师的问题。我有一个我设计的用户控件,其中包含用户输入IPv4,IPv6或DNS的文本框(以及其他内容)。我需要将该文本验证为有效(TextChanged事件)报告回主程序。请考虑以下代码:
private bool addressError;
public EventHandler ErrorChanged;
public bool Error
{
get
{
return addressError;
}
set
{
if (this.Error != value)
{
addressError = value;
OnErrorChanged(this, EventArgs.Empty);
}
}
}
protected virtual void OnErrorChanged(object sender, EventArgs e)
{
if (ErrorChanged != null)
{
ErrorChanged(sender, e);
}
}
然后我将事件处理程序添加到主程序设计器(控件名称为“Com”):
this.Com.ErrorChanged += new System.EventHandler(this.Com_ErrorChanged);
我遇到的问题是,虽然代码完全符合我的要求,但设计师认为没有ErrorChanged
事件。它报告的确切消息是
“类型'ModbusCom.Communications'没有命名事件 'ErrorChanged'。“
我可以忽略错误,设计师会显示表格。我可以运行程序,一切都很好,但不得不一直告诉它忽略这个问题有点烦人。有什么办法可以解决这个问题吗?感谢帮助!
答案 0 :(得分:7)
您没有将其声明为活动
变化:
public EventHandler ErrorChanged;
成:
public event EventHandler ErrorChanged;