Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > WPF и Silverlight > Обработка нажатия клавиш


Автор: Ptica_Oz 17.11.2010, 09:04
Здравствуйте все.
Ситуация следующая: есть TextBox, в который можно вводить только числа от 0 до 255.
Сделала это при помощи обработки события _KeyDown следующим образом:
Код

private Key[] AllowKey = new Key[]
            { Key.D0, Key.D1, Key.D2, Key.D3, Key.D4, 
                Key.D5, Key.D6, Key.D7, Key.D8, Key.D9};
private void TextBox_KeyDown(object sender, KeyEventArgs e)
        {  
            e.Handled = CheckKey(e.Key);
        }
private bool CheckKey(Key aKey)
        {
            if ((AllowKey.Contains(aKey)) && (Keyboard.Modifiers == ModifierKeys.None))
                return false;
            else return true;
        }

При такое реализации могу водить только цифры с основной клавиатуры.
Как вводить цифры вспомогательной клавиатуры? Ещё хотелось бы обрабатывать нажатие на стрелки вверх/вниз и Enter.

Автор: Irdis 17.11.2010, 11:17
куда-то не туда 
upd

Key.NumPad0 .. Key.NumPad9
Key.Up Key.Down ....

и лучше так,

Код

private void TextBox_KeyDown(object sender, KeyEventArgs e)
        {  
            e.Handled = !IsDigit(e.Key);
        }
private static bool IsDigit(Key aKey)
        {
            return (Key.D0 <= e.Key && e.Key <= Key.D9) && (Keyboard.Modifiers == ModifierKeys.None));
        }

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)