当我按Enter键时,如果TextBox
的KeyDown
事件的AcceptsReturn
属性设置为true,则不会触发此事件。我怎样才能确定何时按下回车键的TextBox
AcceptsReturn
设置为true
?没有为UWP中的TextBox触发KeyDown事件
回答
我尝试下面的代码,它的工作对我来说,
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 ***
}
在XAML:
<TextBox VerticalAlignment="Top" KeyDown="TextBox_KeyDown"/>
在后面的代码:从输出
private void TextBox_KeyDown(object sender, KeyRoutedEventArgs e)
{
Debug.WriteLine(e.Key);
}
,你可以看到,输入被识别。
对不起,如果我按回车键,不会触发KeyDown事件。 TextBox句柄当按下Enter键时。如果我没有将TextBox的Accepts Returns设置为true,那么当我按Enter键时会触发Key down事件。但是,如果我将AcceptsReturn设置为true,那么KeyDown事件不会被解雇 –
当我按Enter键时,文本框的按键事件未被触发。只有当我将文本框的Accepts Return属性设置为true时才会发生这种情况。
这是因为如果AcceptsReturn
设置为true,则TextBox
允许换行字符,所以当你按回车键,就会启动一个新的生产线,并KeyDown事件不会被解雇。另外,如果设置为false(默认情况下为false),那么当您按Enter键时,它会使此TextBox
处于输入焦点状态,KeyDown事件可能会被触发。
如何识别何时按下Enter键?
恐怕你不能用KeyDown事件,以确定在这种情况下回车键,但你可以在后面的代码得到通知使用TextBox.TextChanged event由于按下回车键时,它会开始一个新行。
嗨@Grace,感谢您的回答,但我找到了解决方案。我在这个场景中使用了Handler,现在它被解雇了。 –
- 1. Opera没有触发keyup和keydown事件
- 2. C# - TextBox TextChanged事件没有触发
- 3. Mvvm TextBox KeyDown事件
- 4. JS触发keydown事件
- 5. KeyDown事件未被触发
- 6. keydown事件触发两次
- 7. TextBox TextChanged GridView中没有触发的事件
- 8. WPF:ComboBox F4键在KeyDown中没有触发事件
- 9. VB.Net中KeyDown事件触发当没有按键时
- 10. TextBox不触发PropertyChanged事件
- 11. keydown上的UWP触发器命令?
- 12. 当TextBox为空时触发事件
- 13. TextBox在Asp.net中的KeyDown事件
- 14. Ext.js Combox keydown触发器选择没有选择的事件
- 15. 触发没有特定功能的Visual Basic Keydown事件
- 16. UWP TimedMetadataTrack事件未触发
- 17. 在UserControl中未触发KeyDown事件
- 18. 没有在SketchFlow中触发KeyDown
- 19. jQuery的:keydown事件触发乘次
- 20. 在keydown事件中的preventDefault(),onchange事件不触发
- 21. UWP(VB.Net)StreamSocketListener没有触发连接事件
- 22. keydown事件没有解雇,为什么?
- 23. UITextView触发事件没有触发
- 24. 强迫keydown事件触发(Windows)
- 25. 触发自动重复Javascript keydown事件
- 26. KeyDown事件不是第二次触发
- 27. VB.NET文本框keydown事件不触发
- 28. KeyDown事件不能用.NET WinForms触发?
- 29. 点击后不再触发Keydown事件
- 30. ServiceWorker'fetch'事件没有为favicons触发
看起来像'.AddHandler'因为[第三个参数,'handledEventsToo'](https://docs.microsoft.com/en-us/uwp/api/windows.ui.xaml.uielement#Windows_UI_Xaml_UIElement_AddHandler_) MSDN说:“*不要经常要求重新处理路由事件,因为它会干扰Windows运行时事件系统的控制合成设计。”*其他缺点:关闭'Enter'太迟了。在这里设置'e.Handled = true;'不会停止TextBox中的输入。但另外一个很好的答案;这工作。 – ruffin