Как обнаружить несколько ключей, введенных в c # keydown событие текстового поля? - PullRequest
1 голос
/ 31 октября 2011

Я хочу создать числовое текстовое поле в серебряном свете.

Я добавил событие нажатия клавиши TextBox для обработки нажатия клавиши .

Внутри события Я проверяю ключ, введенный в текстовое поле.

событие выглядит следующим образом

  private void TextBox_KeyDown(object sender, KeyEventArgs e)
    {
        if (!this.Validate(sender,e))
            e.Handled = true;
    }

функция Подтвердить следующим образом

  private bool Validate(object sender, KeyEventArgs e)
    {

        if (e.Key == Key.Enter) //accept enter and tab
        {
            return true;
        }
        if (e.Key == Key.Tab)
        {
            return true;
        }

        if (e.Key < Key.D0 || e.Key > Key.D9) //accept number on alphnumeric key
            if (e.Key < Key.NumPad0 || e.Key > Key.NumPad9) //accept number fomr NumPad
                if (e.Key != Key.Back) //accept backspace
                    return false;

        return true;
    }

Я не могу обнаружить сдвиг и Key.D0 для Key.D1, т.е.

SHIFT + 1 , который возвращает "! "

SHIFT + 3 возвращает " # ", как и любые другие специальные клавиши.

Я не хочу, чтобы пользователь вводил специальный символ в текстовое поле.

Как мне обработать это событие ключей?

Ответы [ 3 ]

6 голосов
/ 10 февраля 2012

В Silverlight я не думаю, что в классе KeyEventArgs есть Modifier с, а вместо Keyboard:

    public void KeyDown(KeyEventArgs e)
    {
        if (Keyboard.Modifiers == ModifierKeys.Control && e.Key == Key.D0)
        {
            ControlZero();
        }
    }
0 голосов
/ 31 октября 2011
textBox2.Text = string.Empty;
textBox2.Text = e.Modifiers.ToString() + " + " + e.KeyCode.ToString();
0 голосов
/ 31 октября 2011

e должен иметь свойство, которое сообщит вам, нажаты ли Shift, Control или Alt.e.Modifiers также может дать вам дополнительную информацию о том, какие дополнительные клавиши-модификаторы были нажаты.

Чтобы отменить символ, вы можете установить e.Handled в True, что заставит элемент управления игнорировать нажатие клавиши.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...