zoukankan      html  css  js  c++  java
  • wpf Textbox 点击选中全部文本

    用法:依赖属性
    SelectTextOnFocus.Active = True
    public class SelectTextOnFocus : DependencyObject
        {
            public static readonly DependencyProperty ActiveProperty = DependencyProperty.RegisterAttached(
                "Active",
                typeof(bool),
                typeof(SelectTextOnFocus),
                new PropertyMetadata(false, ActivePropertyChanged));
    
            private static void ActivePropertyChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
            {
                if (d is TextBox)
                {
                    TextBox textBox = d as TextBox;
                    if ((e.NewValue as bool?).GetValueOrDefault(false))
                    {
                        textBox.GotKeyboardFocus += OnKeyboardFocusSelectText;
                        textBox.PreviewMouseLeftButtonDown += OnMouseLeftButtonDown;
                    }
                    else
                    {
                        textBox.GotKeyboardFocus -= OnKeyboardFocusSelectText;
                        textBox.PreviewMouseLeftButtonDown -= OnMouseLeftButtonDown;
                    }
                }
            }
    
            private static void OnMouseLeftButtonDown(object sender, MouseButtonEventArgs e)
            {
                DependencyObject dependencyObject = GetParentFromVisualTree(e.OriginalSource);
    
                if (dependencyObject == null)
                {
                    return;
                }
    
                var textBox = (TextBox)dependencyObject;
                if (!textBox.IsKeyboardFocusWithin)
                {
                    textBox.Focus();
                    e.Handled = true;
                }
            }
    
            private static DependencyObject GetParentFromVisualTree(object source)
            {
                DependencyObject parent = source as UIElement;
                while (parent != null && !(parent is TextBox))
                {
                    parent = VisualTreeHelper.GetParent(parent);
                }
    
                return parent;
            }
    
            private static void OnKeyboardFocusSelectText(object sender, KeyboardFocusChangedEventArgs e)
            {
                TextBox textBox = e.OriginalSource as TextBox;
                if (textBox != null)
                {
                    textBox.SelectAll();
                }
            }
    
            [AttachedPropertyBrowsableForChildrenAttribute(IncludeDescendants = false)]
            [AttachedPropertyBrowsableForType(typeof(TextBox))]
            public static bool GetActive(DependencyObject @object)
            {
                return (bool) @object.GetValue(ActiveProperty);
            }
    
            public static void SetActive(DependencyObject @object, bool value)
            {
                @object.SetValue(ActiveProperty, value);
            }
        }
  • 相关阅读:
    基于XMPP协议的Android即时通信系
    codeforces 830 B Cards Sorting
    [SCOI2007]修车
    spoj GSS4
    hdu 3652 B-number
    【模版】多项式乘法 FFT
    hdu 3642 Get The Treasury
    hdu 1255 覆盖的面积
    hdu 4553 约会安排
    UVA-11992 Fast Matrix Operations
  • 原文地址:https://www.cnblogs.com/akiing/p/9717270.html
Copyright © 2011-2022 走看看