我希望我的Win-Forms应用程序(有许多不同的形式)只接受用户输入的某些字符。这个限制应该适用于所有表单,所有输入字段等。是否有任何简单的解决方案来实现这一点,而无需向每个单独的表单添加键盘事件,甚至更好,而不更改任何现有表单?
首先,我想到了一个低级别的键盘钩子,但是这将全局应用于系统上运行的每个应用程序中的每个用户输入,这不是理想的解决方案,我想。还有其他任何可能性或建议吗?
答案 0 :(得分:0)
如果为所需的每个控件创建自定义控件,并将控件设置为继承核心控件,则可以执行此操作。例如,此代码将阻止单击零:
public class MyTextBox : TextBox
{
protected override void OnKeyUp(KeyEventArgs e)
{
if (e.KeyCode == Keys.D0)
e.SuppressKeyPress = true;
}
}
您甚至可以从工具箱中拖动此控件(在构建之后)。