2016-04-29 2 views

ответ

3

Я попытался код ниже, и его работы для меня,

var textBox = new TextBox(); 
KeyEventHandler keyeventHandler = new KeyEventHandler(textBox_KeyDown); 

textBox.AddHandler(TextBox.KeyDownEvent, keyeventHandler, true); 

private void textBox_KeyDown(object sender, KeyEventArgs e) 
{ 
*** now Enter Key gets fired eventhough when i set AcceptsReturn as True *** 
} 
+0

Похоже, что '.AddHandler' работает из-за [третьего параметра,' handledEventsToo'] (https://docs.microsoft.com/en-us/uwp/api/windows.ui.xaml.uielement#Windows_UI_Xaml_UIElement_AddHandler_), из которого MSDN говорит: «* Не пытайтесь повторно обрабатывать маршрутизируемое событие, потому что оно мешает предполагаемому дизайну системы событий Windows Runtime для управления композицией. *« Другой недостаток: слишком поздно, чтобы отключить «Enter». Установка 'e.Handled = true;' здесь не останавливает ввод из TextBox. Но в остальном отличный ответ; это работает. – ruffin

0

в XAML:

<TextBox VerticalAlignment="Top" KeyDown="TextBox_KeyDown"/> 

в коде позади:

private void TextBox_KeyDown(object sender, KeyRoutedEventArgs e) 
    { 
     Debug.WriteLine(e.Key); 
    } 

от выхода, вы можете увидеть, что Enter опознан.

+2

Извините, если я нажмите клавишу ввода, KeyDown событие не увольняют. Ручки TextBox При нажатии клавиши ввода. Если я не установил Accepts Returns для TextBox как истинный, событие Key down запускается, когда я нажимаю клавишу ввода. Но если я устанавливаю AcceptsReturn как true, то событие KeyDown не запускается –

1

Когда я нажимаю клавишу ввода, событие Key Down для текстового поля не запускается. Это происходит только тогда, когда я устанавливаю свойство Accepts Return для текстового поля как true.

Это происходит потому, что если AcceptsReturn установлена ​​истина, то TextBox позволяет символы новой строки, поэтому при нажатии клавиши ввода ключа, он начнет новую строку, и событие KeyDown не будет уволен. Otherwiser, если для него установлено значение false (по умолчанию это значение false), когда вы нажимаете клавишу ввода, он делает это TextBox в состоянии фокуса ввода, событие KeyDown может быть запущено.

Как определить, когда нажата клавиша Enter?

Я боюсь, что вы не можете использовать KeyDown событие, чтобы определить клавишу Enter в этом сценарии, но вы можете использовать TextBox.TextChanged event в код, чтобы получить уведомление, так как он будет начать новую строку при нажатии на клавишу ввода ,

+0

Привет @Grace, Спасибо за ответ, но я нашел решение. Я использовал обработчик для этого сценария, и теперь его увольняют. –

Смежные вопросы