我在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
事件。它报告的确切消息是我可以忽略该错误,设计器将显示确定表单。我可以运行该程序,并且一切都很好,但是不得不不断告诉它忽略该问题有点烦人。有什么我可以解决的吗?感谢您的帮助!
最佳答案
您不是将其声明为事件
改变:
public EventHandler ErrorChanged;
进入:
public event EventHandler ErrorChanged;