6

我在使用 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’的事件。”

我可以忽略该错误,并且设计器可以正常显示表单。我可以运行程序,一切都很好,但是不得不一直告诉它忽略这个问题有点烦人。我能做些什么来解决这个问题吗?帮助表示赞赏!

4

1 回答 1

8

您没有将其声明为事件

改变:

public EventHandler ErrorChanged;

进入:

public event EventHandler ErrorChanged;
于 2013-03-20T14:35:00.603 回答