WinForm中的输入处理

禁止在TextBox中使用某些输入键而无法阻止特殊按键(如Ctrl-V / Ctrl-C)的最佳方法是什么?

例如,只允许用户输入字符或数字的一个子集,例如A或B或C,而没有其他东西。


我会使用keydown事件并使用e.cancel在钥匙不被允许时停止钥匙。 如果我想在多个地方做,那么我会做一个继承文本框的用户控件,然后添加属性AllowedChars或DisallowedChars来为我处理它。 我有几个变体,我经常使用它,有的允许金钱格式化和输入,有的用于时间编辑等等。

做为用户控件的好处是可以将其添加到自己的杀手文本框中。 ;)


我使用了Winforms的Masked Textbox控件。 这里有更长的解释。 实质上,它禁止与该字段的标准不匹配的输入。 如果您不希望人们输入除数字之外的任何内容,则不会允许他们键入除数字之外的任何内容。


这是我通常如何处理的。

Regex regex = new Regex("[0-9]|b");            
e.Handled = !(regex.IsMatch(e.KeyChar.ToString()));

这将只允许数字字符和退格。 问题是在这种情况下你不会被允许使用控制键。 如果你想保持这个功能,我会创建自己的文本框类。

链接地址: http://www.djcxy.com/p/95955.html

上一篇: Input handling in WinForm

下一篇: Good ORM tool for android