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 }

 

WPF 限制Textbox输入的内容

上一篇:Win7 内核重载 1 ——内核版PELoader


下一篇:应有dataGridView控件