示例#1
0
        /// <summary>
        /// Provede vložení hodnoty, a vyvolání eventu <see cref="ValueChanging"/>.
        /// Pokud ale na začátku je <see cref="_ValueIsChanging"/> == true, pak nedělá nic; to je ochranou proti zacyklení.
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="value"></param>
        /// <param name="eventSource"></param>
        protected void _SetValue(object sender, T value, EventSourceType eventSource)
        {
            if (this._ValueIsChanging)
            {
                return;
            }
            try
            {
                this._ValueIsChanging = true;

                T oldValue = this._Value;
                T newValue = this.AlignValueToLimit(value);
                if (!this.IsEqual(oldValue, newValue))
                {
                    this._Value = newValue;

                    GPropertyChangeArgs <T> args = new GPropertyChangeArgs <T>(oldValue, newValue, eventSource);
                    this.CallValueChanging(sender, args);

                    this._Value = args.CorrectValue;
                }
            }
            finally
            {
                this._ValueIsChanging = false;
            }
        }
示例#2
0
 /// <summary>
 /// Metoda vyvolá háček <see cref="OnValueChanging(object, GPropertyChangeArgs{T})"/> a event <see cref="ValueChanging"/>.
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="args"></param>
 protected void CallValueChanging(object sender, GPropertyChangeArgs <T> args)
 {
     this.OnValueChanging(sender, args);
     if (this.ValueChanging != null)
     {
         this.ValueChanging(sender, args);
     }
 }
示例#3
0
 /// <summary>
 /// Protected háček při změně hodnoty
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="args"></param>
 protected virtual void OnValueChanging(object sender, GPropertyChangeArgs <T> args)
 {
 }