C# 如何处理userControl属性的事件?

C# 如何处理userControl属性的事件?,c#,winforms,user-controls,C#,Winforms,User Controls,我有一个userControl属性,如下所示: public enum Mode { Full, Simple } public Mode NavigatorMode { get; set; } 现在,我需要编写一个事件,当用户将属性(NavigatorMode)从Full模式更改为simple模式时,或者相反 我该怎么做?在控件中实现INotifyPropertyChanged接口怎么样 或者简单地编写自定义事件: public event EventHandler<M

我有一个userControl属性,如下所示:

    public enum Mode { Full, Simple }
    public Mode NavigatorMode { get; set; }
现在,我需要编写一个事件,当用户将属性(NavigatorMode)从Full模式更改为simple模式时,或者相反


我该怎么做?

在控件中实现INotifyPropertyChanged接口怎么样

或者简单地编写自定义事件:

public event EventHandler<Mode> ModeChanged;

public Mode NavigatorMode
{
    get { return _navigatorMode; }
    set 
    {
        _navigatorMode = value;
        if(ModeChanged != null)
            ModeChanged(this, _navigatorMode);
    }
}
公共事件事件处理程序模式已更改;
公共模式导航器模式
{
获取{return\u navigatorMode;}
设置
{
_导航模式=值;
if(ModeChanged!=null)
模式已更改(此为导航模式);
}
}

在用户控件之外,您可以处理该事件并根据模式执行某些操作。

将InotifyProperty更改为类:

public class YourClass : INotifyPropertyChanged
{
    // Your private variable
    private Mode mode;

    // Declare the event 
    public event PropertyChangedEventHandler PropertyChanged;

    public YourClass()
    {
    }

    public Mode NavigatorMode 
    {
       get { return mode; }
       set
       {
          mode = value;

          // Call OnPropertyChanged whenever the property is updated
          OnPropertyChanged(mode);
       }
    }

    // Create the OnPropertyChanged method to raise the event 
    protected void OnPropertyChanged(Mode modeParam)
    {
       PropertyChangedEventHandler handler = PropertyChanged;
       if (handler != null)
       {
          handler(this, new PropertyChangedEventArgs(modeParam));
       }
    }
 }