Ejemplo n.º 1
0
        public void SetValue(T value)
        {
            T before = this.value;

            OnValueChanging?.Invoke(before, ref value);
            SetValueNoEvent(value);
            OnValueChanged?.Invoke(before, value);
            OnValueChangedSimple?.Invoke();
        }
Ejemplo n.º 2
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);
        }
    public void SetEditValue(object value, bool notify)
    {
        bool changed = false;

        if (INTERNAL__SetEditValue(value, notify, ref changed))
        {
            if (notify && changed)
            {
                OnValueChanging?.Invoke(editingId, value);
            }
        }
        else
        {
            throw new InvalidExposedPropertyException(editingId);
        }
    }
 protected void InvokeOnValueChanging(int id, object value)
 {
     OnValueChanging?.Invoke(id, value);
 }