代码之家  ›  专栏  ›  技术社区  ›  user2191259

C#Designed无法识别自定义用户控件中的自定义事件

  •  6
  • user2191259  · 技术社区  · 12 年前

    我在使用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”没有名为的事件 “错误已更改”。"

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

    1 回复  |  直到 12 年前
        1
  •  8
  •   Daniel A. White    12 年前

    您没有将其声明为事件

    更改:

    public EventHandler ErrorChanged;
    

    进入:

    public event EventHandler ErrorChanged;