Как запретить пользователю вводить все символы, кроме клавиши со стрелкой? - PullRequest
0 голосов
/ 11 января 2011

У меня есть TextBox в моей WinForm profram

Как запретить пользователю печатать все символы, кроме клавиш со стрелками, Esc и Enter?

Извините , я забыл написатьэто для Windows-Mobile и в Windows-Mobile нет

e.SuppressKeyPress = true;

спасибо, и извините за непонимание

Ответы [ 3 ]

1 голос
/ 11 января 2011

Событие KeyDown сделает это за вас.

    private void textBox1_KeyDown(object sender, KeyEventArgs e)
    {
        switch (e.KeyCode)
        {
            // These keys will be allowed
            case Keys.Left:
            case Keys.Right:
            case Keys.Up:
            case Keys.Down:
            case Keys.Escape:
            case Keys.Enter:
                break;

            // These keys will not be allowed
            default:
                e.SuppressKeyPress = true;
                break;
        }
    }
0 голосов
/ 11 января 2011

Поскольку BoltClock писал, эти символы не могут быть напечатаны, поэтому вы не можете «напечатать» их. Если вы хотели игнорировать эти символы и делать что-то еще для других символов, вы можете сделать это в событии KeyDown текстового поля.

    private void textBox1_KeyDown(object sender, KeyEventArgs e)
    {
        if (
            e.KeyCode == Keys.Left || 
            e.KeyCode == Keys.Right ||
            e.KeyCode == Keys.Down ||
            e.KeyCode == Keys.Up ||
            e.KeyCode == Keys.Enter || 
            e.KeyCode == Keys.Escape
            )
        {
            e.SuppressKeyPress = true;
            return;
        }
        //do sth...
    }
0 голосов
/ 11 января 2011

Вы можете обработать событие TextBox.KeyDown.

Там есть ключи фильтра, которые вы не хотите передавать в TextBox - проверьте, является ли KeyEventArgs.KeyCode вашим кодом)

Затем установите KeyEventArgs.Обработано и KeyEventArgs.SuppressKeyPress равно true.

...