예제 #1
0
        protected bool ChangeValue(int value, ValueChangeReason reason)
        {
            // 对设置值进行有效性检查
            if (value > this.MaxValue)
            {
                value = this.MaxValue;
            }
            if (value < this.MinValue)
            {
                value = this.MinValue;
            }

            // 数值没有变化?
            int oldValue = this.Value;

            if (value == oldValue)
            {
                // 只需要更新数据显示就可以了
                if (reason != ValueChangeReason.Keyboard)
                {
                    SetShownText(ValueToString(value));
                }
                return(true);
            }

            // 发出通知,查看是否可以修改?
            if (OnValueChanging != null)
            {
                ValueChangingArgs e = new ValueChangingArgs(reason, oldValue, value);
                OnValueChanging.Invoke(this, e);
                if (e.rejectChange)
                {
                    return(false);
                }

                // 可以通过 Changing 事件设置值
                value = e.newValue;
            }

            // 真正修改数据
            if (reason == ValueChangeReason.Keyboard && (!internalChange) &&
                StringToValue(this.txtNumeric.Text, out oldValue) && oldValue == value)
            {
                internalChange = true;
                this.Value     = value;
                internalChange = false;
            }
            else
            {
                this.Value = value;
            }

            return(true);
        }
예제 #2
0
 public ValueChangedArgs(ValueChangeReason reason, int oldValue, int newValue)
 {
     this.Reason   = reason;
     this.oldValue = oldValue;
     this.newValue = newValue;
 }
예제 #3
0
 public ValueChangingArgs(ValueChangeReason reason, int oldValue, int newValue)
     : base(reason, oldValue, newValue)
 {
 }