当您在HTML表单中的任何位置按下Enter时,它会触发其
action
,这相当于按下submit
按钮。
如何制作一个窗口,在我按下Enter的任何地方都会触发一个事件?在XAML中将PreviewKeyDown
事件分配给窗口,然后在代码后台中检查KeyEventArgs
以确定用户是否按下了Enter键。
XAML代码:
<Window
[...]
PreviewKeyDown="Window_PreviewKeyDown">
后端代码:
private void Window_PreviewKeyDown(object sender, KeyEventArgs e)
{
if (e.Key == Key.Enter)
{
// Whatever code you want if enter key is pressed goes here
}
}
DatePicker
控件会吞噬Enter按键,导致默认按钮不能被点击。我写了这个事件处理程序来解决这个问题。使用PreviewKeyUp
确保DatePicker
在点击默认按钮之前执行其日期格式化代码。private void DatePicker_PreviewKeyUp(object sender, KeyEventArgs e) {
// event handler to click the default button when you hit enter on DatePicker
if (e.Key == Key.Enter) {
// https://www.codeproject.com/Tips/739358/WPF-Programmatically-click-the-default-button
System.Windows.Input.AccessKeyManager.ProcessKey(null, "\x000D", false);
}
}
Enter
。解决方法是为TextBox
设置AcceptsReturn = false
。如果您不需要多行文本框并且Enter键应提交输入的文本,则此选项有效。同时,应在输入时更新文本绑定。<TextBox Text="{Binding Text, UpdateSourceTrigger=PropertyChanged}"
AcceptsReturn="False"/>
<Button Name="btnDefault" IsDefault="true" Click="OnClickDefault">OK</Button>
你可以通过将按钮的IsDefault属性设置为True来实现这一点。
你可以从微软的文档中获取详细信息。