Ejemplo n.º 1
0
        /// <summary>
        /// 获得焦点时更新要显示的文本
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        void OnGotFocus(object sender, RoutedEventArgs e)
        {
            MaskBoxState state = SaveState();

            _maskManager.UpdateTextAndValue(false);
            // 重置光标位置
            _tb.SelectionLength = 0;
            _tb.SelectionStart  = (state.SelectionStart == state.Text.Length) ? Text.Length : state.SelectionStart;
        }
Ejemplo n.º 2
0
        /// <summary>
        /// 保存当前文本框的状态
        /// </summary>
        /// <returns></returns>
        MaskBoxState SaveState()
        {
            MaskBoxState state = new MaskBoxState();

            state.SelectionLength = _tb.SelectionLength;
            state.SelectionStart  = _tb.SelectionStart;
            state.Text            = Text;
            return(state);
        }
Ejemplo n.º 3
0
 /// <summary>
 /// 键盘按下事件处理
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 void OnKeyDown(object sender, KeyRoutedEventArgs e)
 {
     _inputManager.OnPreviewKeyDown(e);
     _isSavedStateValid = !e.Handled;
     if (_isSavedStateValid)
     {
         // 保存文本框当前状态
         _savedState = SaveState();
     }
 }
Ejemplo n.º 4
0
        /// <summary>
        /// 加载文本框状态
        /// </summary>
        /// <param name="p_state"></param>
        void RestoreState(MaskBoxState p_state)
        {
            if (p_state.Text == _tb.Text)
            {
                return;
            }

            _tb.TextChanged -= OnTextChanged;
            _tb.Text         = p_state.Text;
            _tb.Select(p_state.SelectionStart, p_state.SelectionLength);
            _tb.TextChanged += OnTextChanged;
            RaiseTextChanged(null);
        }