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); }
/// <summary> /// 响应tsComboMonth的ValueChanging事件 /// </summary> private void tsComboMonth_ValueChanging(object sender, ValueChangingArgs e) { /* 若保存按钮可用,检查是否有未保存的数据 */ if (tsButtonSave.Enabled && !SaveData(new List <Act> { Act.AskIsUpdate, Act.SaveData })) { tsComboMonth.Value = e.OldValue; return; } /* 控制权限 */ SetControlRight(); }