首页 > 解决方案 > 如何制作用于更改自定义属性的事件(自定义控件)

问题描述

我有从 TextBox 类继承的自定义控件,并且我添加了一些属性,例如我有属性 placeHolderText 并且我想要一些在我更改该文本时会发生的事件?
像这些事件 在设计器视图中有我的属性 如何实现?
在此处输入图像描述

在此处输入图像描述

标签: c#winformseventspropertiescustom-controls

解决方案


要在 C# 中创建事件,您可以遵循标准 .NET 事件模式

要为自定义控件的属性创建Changed事件,您可以按照以下步骤操作:Something

  • 声明一个事件SomethingChanged。它可以是任何委托,作为一般委托,您可以依赖EventHandler委托,或者EventHandler<T>,如果您希望拥有特定的事件参数而不是使用EventArgs.
  • 创建一个OnSomethingChanged接受事件参数并负责引发事件的受保护虚拟方法。因此,如果使用此方法,您应该在正文中引发事件。
  • 在属性设置器中,检查值是否与当前值不同,分配它并调用OnSomethingChanged以引发事件。

例子

public EventHandler PlaceHolderChanged;
string placeholder;
public string PlaceHolder
{
    get { return placeholder; }
    set
    {
        if (placeholder != value)
        {
            placeholder = value;
            OnPlaceHolderChanged(EventArgs.Empty);
        }
    }
}
protected virtual void OnPlaceHolderChanged(EventArgs e)
{
    PlaceHolderChanged?.Invoke(this, e);
}

推荐阅读