我想用 C# 创建一个 wpf 应用程序,在屏幕上显示一些文本,用户应该在其中编写响应并按 Enter 键提交响应。我不想使用文本框,因为窗口中只有一行用于文本输入,并且我不希望用户必须单击才能选择文本框。我希望该应用程序无需鼠标。
我的问题是:如何让用户在写完答案后,只需按 Enter 键即可提交响应?
我尝试了在微软帮助网站上找到的以下代码片段:
private void OnKeyDownHandler(object sender, KeyEventArgs e)
{
if (e.Key == Key.Return)
{
doSomething();
}
}
我想我必须在其他地方添加一些代码,但我不确定需要在哪里添加或添加什么。
最佳答案
如果您想确保窗口处理每次 Enter 键按下而不关心哪个控件聚焦,您可以使用 PreviewKeyDown 事件:
private void Window_PreviewKeyDown(object sender, KeyEventArgs e)
{
if (e.Key == Key.Enter)
{
//Process user input
e.Handled = true;
}
}
当然,如果您正在执行 mvvm,您可以创建一个行为来封装事件处理程序:
public class WindowBehavior : Behavior<Window>
{
protected override void OnAttached()
{
AssociatedObject.PreviewKeyDown += AssociatedObject_PreviewKeyDown;
}
private void AssociatedObject_PreviewKeyDown(object sender, KeyEventArgs e)
{
if (e.Key == Key.Enter)
{
MessageBox.Show("Enter from Window");
e.Handled = true;
}
}
protected override void OnDetaching()
{
AssociatedObject.PreviewKeyDown -= AssociatedObject_PreviewKeyDown;
}
我建议您阅读this article关于 WPF 事件的基本气泡、隧道和直接事件。
关于c# - 如何在 wpf 应用程序中创建键盘输入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31220870/