• 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);
            }
        }
  • 相关阅读:
    ApiKernel
    ApiUser
    BringWindowToTop完美激活窗口与置顶
    poj2486 Apple Tree【区间dp】
    HYSBZ1588 营业额统计【Splay】
    hdu5115 Dire Wolf【区间dp】
    poj1144 Network【tarjan求割点】
    poj1236 Network of Schools【强连通分量(tarjan)缩点】
    poj2342 Anniversary party【树形dp】
    poj2449 Remmarguts' Date【A*算法】
  • 原文地址:https://www.cnblogs.com/akiing/p/9717270.html
Copyright © 2020-2023  润新知