0

Win-Forms アプリケーション (多くの異なるフォームを持つ) で、ユーザー入力の特定の文字のみを受け入れるようにしたいと考えています。この制限は、すべてのフォーム、すべての入力フィールドなどに適用する必要があります。既存のフォームを変更せずに、すべてのフォームにキーボードイベントを追加せずに、さらに良い方法でこれを実装する簡単な解決策はありますか?

最初に低レベルのキーボード フックを考えましたが、これはシステム上で実行されているすべてのアプリケーションのすべてのユーザー入力にグローバルに適用され、理想的なソリューションではないと思います。他の可能性や提案はありますか?

4

1 に答える 1

0

必要な各コントロールのカスタム コントロールを作成し、コア コントロールを継承するようにコントロールを設定すると、これを行うことができます。たとえば、次のコードはゼロをクリックしないようにします。

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

このコントロールをツールボックスから (ビルド後に) ドラッグすることもできます。

于 2012-08-06T08:29:50.797 に答える