如何进行事件以更改定制属性(定制控件)

时间:2018-06-23 19:19:34

标签: c# winforms events properties custom-controls

我有从TextBox类继承的自定义控件,并且我添加了一些属性,例如,我具有placeHolderText属性,并且我想拥有一些在更改文本时会发生的事件?
喜欢这些活动
enter image description here
在设计师视图中有我的财产
enter image description here
如何实现?

1 个答案:

答案 0 :(得分:0)

要使用C#创建事件,您可以遵循Standard .NET event patterns

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

  • 声明一个事件SomethingChanged。它可以是任何委托,作为一般委托,您可以依靠EventHandler委托或EventHandler<T>,如果要使用特定的事件参数而不是使用EventArgs
  • 创建一个受保护的虚拟OnSomethingChanged方法,该方法接受事件args并负责引发事件。因此,如果使用此方法,则应该在体内引发事件。
  • 在属性设置器中,检查该值是否与当前值不同,进行分配,然后调用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);
}