自定义控件中的自定义事件(变量已更改)

时间:2014-06-10 09:34:06

标签: c# custom-controls custom-events

我正在制作一个包含三个按钮的自定义控件。每个按钮代表一个标签。当我单击一个按钮以切换到与该选项卡对应的选项卡时,控件的变量已更新,此变量称为“selectedIndex”。如何更改此索引时触发的自定义事件?

我在这里看过自定义事件的解决方案,但所有这些都是现有事件的副本,例如Click-events。我的问题涉及变量变化事件“。

问候!

1 个答案:

答案 0 :(得分:1)

一个选项是让您的对象实现非常标准的INotifyPropertyChanged interface。没有规则声明对象上的每个属性都需要引发PropertyChanged事件,因此只需为相关的一个属性引发它。像这样:

public class MyObject : INotifyPropertyChanged
{
    private string _myProperty;
    public string MyProperty
    {
        get { return _myProperty; }
        set
        {
            _myProperty = value;
            NotifyPropertyChanged();
        }
    }

    public event PropertyChangedEventHandler PropertyChanged;

    private void NotifyPropertyChanged([CallerMemberName] string propertyName = "")
    {
        if (PropertyChanged != null)
            PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
    }
}

如果您的.NET版本不支持CallerMemberName,那么您可以删除它并手动提供属性名称:

NotifyPropertyChanged("MyProperty");

此时,任何调用代码都可以在此对象的任何实例上订阅公共PropertyChanged事件。此接口特别方便,因为它通常用于许多UI技术中,用于更新数据绑定的UI元素。实际上,所有接口都强制执行该事件的标准名称。如果您愿意,可以放弃界面并创建自定义公共事件。并且只要您的对象在逻辑上需要时调用该事件。暴露事件并调用它的结构将是相同的。

相关问题