假设自定义控件(UserControl)有一自定义属性 PatientName,
那么在用户修改 PatientName 的内容时将触发 B 事件,B事件在控件中将如何定义?
谢谢!!  

解决方案 »

  1.   

     public delegate void PatientNameEvent();
            public event PatientNameEvent PatientNameChanged;        private object m_PatientName;        public object PatientName
            {
                get { return m_PatientName; }
                set
                {
                    if (PatientNameChanged != null) PatientNameChanged();
                    m_PatientName = value;
                }
            }
      

  2.   

    public object PatientName
            {
                get { return m_PatientName; }
                set
                {
                    if(m_PatientName!=value)
                        OnPatientNameChanged();
                    m_PatientName = value;
                }
            }protect viture void OnPatientNameChanged()
    {
    if (PatientNameChanged != null) 
    PatientNameChanged();
    }
      

  3.   

    一楼的做法完全正确
    我这里抛砖引玉给一段完善的示例,这是我们编程的经典代码:    public class MyClass
        {
            public event EventHandler<PropertyChagedEventArgs> MyPropertyChanging;
            public event EventHandler<PropertyChagedEventArgs> MyPropertyChanged;        private int _myProperty;
            public int MyProperty
            {
                get { return _myProperty; }
                set
                {
                    if (value != _myProperty)
                    {
                        PropertyChagedEventArgs e = new PropertyChagedEventArgs("MyProperty", _myProperty, value);
                        if (this.MyPropertyChanging != null)
                        {
                            this.MyPropertyChanging(this, e);
                            if (e.Cancel) return;
                        }
                        _myProperty = (int)e.NewValue;
                        if (this.MyPropertyChanged != null)
                        {
                            this.MyPropertyChanged(this, e);
                        }
                    }
                }
            }
        }    /// <summary>
        /// 通用的类
        /// </summary>
        public class PropertyChagedEventArgs : EventArgs
        {
            public PropertyChagedEventArgs(string propertyName,object oldValue,object newValue)
            {
                PropertyName = propertyName;
                OldValue = oldValue;
                NewValue = newValue;
            }        public bool Cancel { get; set; }
            public string PropertyName { get; private set; }
            public object OldValue { get; private set; }
            public object NewValue { get; set; }
        }
      

  4.   

    kldxdybb,Error_Code写的真不错,困惑N久的问题,看后明白,多谢多谢!