• WPF 水印TextBox WatermarkTextBox


    //https://blog.csdn.net/puchitomato/article/details/12248691

    转自以上链接,自己添加了Enter响应事件。
        public class WatermarkTextBox : TextBox
        {
            private string watermark = string.Empty;
            public string Watermark
            {
                get { return watermark; }
                set { watermark = value ?? string.Empty; }
            }

            public static readonly DependencyProperty WatermarkProperty =
                DependencyProperty.Register("Watermark", typeof(string), typeof(WatermarkTextBox));

            static WatermarkTextBox()
            {
                DefaultStyleKeyProperty.OverrideMetadata(typeof(WatermarkTextBox),
                    new FrameworkPropertyMetadata(typeof(WatermarkTextBox)));  
            }
            public WatermarkTextBox() {
                this.KeyDown += WatermarkTextBox_KeyDown;
            }

            private void WatermarkTextBox_KeyDown(object sender, KeyEventArgs e)
            {
                if (e.Key == Key.Enter)
                {
                    TraversalRequest request = new TraversalRequest(FocusNavigationDirection.Next);

                    UIElement focusElement = Keyboard.FocusedElement as UIElement;
                    if (focusElement != null)
                    {
                        focusElement.MoveFocus(request);
                    }
                    e.Handled = true;
                }
            }

            protected override void OnTextChanged(TextChangedEventArgs e)
            {
                base.OnTextChanged(e);

                if (this.Text == string.Empty)
                {
                    VisualStateManager.GoToState(this, "Empty", true);
                }
                else
                {
                    VisualStateManager.GoToState(this, "NotEmpty", true);
                }
            }
        }
        public enum TextStates
        {
            /// <summary>
            /// 内容为空
            /// </summary>
            Empty,
            /// <summary>
            /// 内容不为空
            /// </summary>
            NotEmpty
        }

    样例:

  • 相关阅读:
    安卓自动化测试添加用例执行回放
    【十二省2019】异或粽子
    【BZOJ4260】Codechef REBXOR
    【JSOI2015】字符串树
    【HAOI2017】供给侧改革
    【NOI2018】你的名字
    【十二省2019】字符串问题
    【LOJ#6041】事情的相似度
    【SP8093】JZPGYZ
    【BZOJ1396】识别子串
  • 原文地址:https://www.cnblogs.com/wangyan89smile/p/10037233.html
Copyright © 2020-2023  润新知