• WPF 限制Textbox输入的内容


    限制文本框TextBox的输入内容,在很多场景都有应用。举个例子,现在文本框中,只能输入0、1、2、3、4、5、6、7、8、9、“|”这11个字符。

    限制输入0-9很容易实现,关键是这个“|”符号。它在WPF中对应的是Key.OemPipe键。如果直接允许该键输入,那么会有“”这个符号也可以输入。那么问题来了,怎么才能限制呢?很简单:先确认shift键是否已经按下。

    关键代码如下:

    1 bool shiftKey = (Keyboard.Modifiers & ModifierKeys.Shift) != 0;

    这样,当我们确认已经按下了shift键时,才允许Key.OemPiple键按下,就可以确保只能输入“|”符号了。

    一个完整的示例代码如下:

     1 private void textbox_keydown_event(object sender, KeyEventArgs)
     2 {
     3             bool shiftKey = (Keyboard.Modifiers & ModifierKeys.Shift) != 0;
     4             if (shiftKey == true)
     5             {
     6                 if (e.Key != Key.OemPipe)
     7                 {
     8                     e.Handled = true;
     9                 }
    10             }
    11             else if (e.Key != Key.Delete && e.Key != Key.Back &&
    12                      e.Key != Key.D0 && e.Key != Key.D1 &&
    13                      e.Key != Key.D2 && e.Key != Key.D3 &&
    14                      e.Key != Key.D4 && e.Key != Key.D5 &&
    15                      e.Key != Key.D6 && e.Key != Key.D7 &&
    16                      e.Key != Key.D8 && e.Key != Key.D9 &&
    17                      e.Key != Key.NumPad0 && e.Key != Key.NumPad1 &&
    18                      e.Key != Key.NumPad2 && e.Key != Key.NumPad3 &&
    19                      e.Key != Key.NumPad4 && e.Key != Key.NumPad5 &&
    20                      e.Key != Key.NumPad6 && e.Key != Key.NumPad7 &&
    21                      e.Key != Key.NumPad8 && e.Key != Key.NumPad9)
    22             {
    23                 e.Handled = true;
    24             }
    25 }

    更新:

    又出了新的需求!!!!!

    要过滤空格输入。测试了一下,发现空格键space、上下左右、PageUp、PageDown几个键是KeyDown事件无法捕获的——也许可以捕获,反正我没有捕获到。测试还发现KeyUp和PreviewKeyDown事件都可以捕获。但是,问题是,使用KeyUp事件时,即是捕获到了,这个空格已经输入了,如果再删除,也会造成不好的体验。所以只有使用PreviewKeyDown事件了。基本方式如上面。

  • 相关阅读:
    uglifyjs2压缩混淆js文件
    Html5应用程序缓存ApplicationCache
    nginx搭建笔记
    Free git private repo
    编程哲学之 C# 篇:007——如何创造万物
    编程哲学之 C# 篇:003——为什么选择 C#
    编程哲学之 C# 篇:004——安装 Visual Studio
    编程哲学之 C# 篇:006——什么是 .NET
    编程哲学之 C# 篇:005——"Hello,World!"
    为什么要使用Entity Framework
  • 原文地址:https://www.cnblogs.com/warnet/p/4174688.html
Copyright © 2020-2023  润新知