C#中的应用程序范围密钥过滤器

时间:2012-08-06 08:18:39

标签: c# user-input restrict

我希望我的Win-Forms应用程序(有许多不同的形式)只接受用户输入的某些字符。这个限制应该适用于所有表单,所有输入字段等。是否有任何简单的解决方案来实现这一点,而无需向每个单独的表单添加键盘事件,甚至更好,而不更改任何现有表单?

首先,我想到了一个低级别的键盘钩子,但是这将全局应用于系统上运行的每个应用程序中的每个用户输入,这不是理想的解决方案,我想。还有其他任何可能性或建议吗?

1 个答案:

答案 0 :(得分:0)

如果为所需的每个控件创建自定义控件,并将控件设置为继承核心控件,则可以执行此操作。例如,此代码将阻止单击零:

public class MyTextBox : TextBox
{
    protected override void OnKeyUp(KeyEventArgs e)
    {
        if (e.KeyCode == Keys.D0)
            e.SuppressKeyPress = true;
    }
}

您甚至可以从工具箱中拖动此控件(在构建之后)。