zoukankan      html  css  js  c++  java
  • 一个WPF只能输入数字的行为。

    没啥好说的,直接上代码:

     public class NumberInputBehaviour : Behavior<TextBox>
        {
            protected override void OnAttached()
            {
                base.OnAttached();
                InputMethod.SetIsInputMethodEnabled(AssociatedObject, false);
                AssociatedObject.PreviewTextInput += AssociatedObject_PreviewTextInput;
                AssociatedObject.TextChanged += AssociatedObject_TextChanged;
                AssociatedObject.LostFocus += AssociatedObject_LostFocus;
            }
    
            protected override void OnDetaching()
            {
                base.OnDetaching();
                AssociatedObject.PreviewTextInput -= AssociatedObject_PreviewTextInput;
                AssociatedObject.TextChanged -= AssociatedObject_TextChanged;
                AssociatedObject.LostFocus -= AssociatedObject_LostFocus;
            }
    
            private void AssociatedObject_LostFocus(object sender, RoutedEventArgs e)
            {
                if (string.IsNullOrEmpty(AssociatedObject.Text))
                {
                    if (!string.IsNullOrEmpty(NullText))
                    {
                        AssociatedObject.Text = NullText;
                    }
                }
            }
    
            private void AssociatedObject_TextChanged(object sender, TextChangedEventArgs e)
            {
                if (Convert.ToInt32(AssociatedObject.Text) == 0)
                {
                    AssociatedObject.Text = "500";
                    AssociatedObject.SelectionStart = AssociatedObject.Text.Length;
                }
            }
    
            private void AssociatedObject_PreviewTextInput(object sender, System.Windows.Input.TextCompositionEventArgs e)
            {
                Regex re = new Regex("[^0-9]+");
                e.Handled = re.IsMatch(e.Text);
    
             
            }
    
    
    
            public String NullText
            {
                get { return (String)GetValue(NullTextProperty); }
                set { SetValue(NullTextProperty, value); }
            }
    
            // Using a DependencyProperty as the backing store for NullText.  This enables animation, styling, binding, etc...
            public static readonly DependencyProperty NullTextProperty =
                DependencyProperty.Register("NullText", typeof(String), typeof(NumberInputBehaviour), new PropertyMetadata(""));
    
    
        }

    xaml 使用方法 :

     <TextBox>
        <i:Interaction.Behaviors>
         <local:NumberInputBehaviour NullText="请输入"></local:NumberInputBehaviour>
        </i:Interaction.Behaviors>
     </TextBox>

    OK....

  • 相关阅读:
    NumPy 百题大冲关,冲鸭!
    33 个送给 Java 程序员的练手项目合集
    比特币——带你掌握未来的技术和财富
    HTML5 蔡徐坤打篮球游戏 NMSL❤️❤️❤️
    网络协议基础:“工作中模模糊糊的概念,这次终于理顺了!”
    昨天521表白失败,我想用Python分析一下...表白记录和聊天记录
    有哪些好用不火的软件?
    如何处理负载、高并发?
    怎么实现第三方登录?
    购物车的原理?
  • 原文地址:https://www.cnblogs.com/yk250/p/10044324.html
Copyright © 2011-2022 走看看