[英]How do I create keyboard input in a wpf application?
我想用c#制作一個wpf應用程序,該應用程序在屏幕上顯示一些文本,並且用戶應該在其中編寫響應,然后按Enter提交響應。 我不想使用文本框,因為窗口中輸入的文本只有一行,並且我不想用戶必須單擊以選擇文本框。 我希望該應用程序沒有鼠標。
我的問題是:如何做到這一點,以便用戶寫下答案后,只需按Enter即可提交響應?
我已經嘗試在Microsoft幫助網站上找到以下代碼片段:
private void OnKeyDownHandler(object sender, KeyEventArgs e)
{
if (e.Key == Key.Return)
{
doSomething();
}
}
我想我必須在其他地方添加一些代碼,但是我不確定我需要在哪里添加什么。
如果您有用於提交的按鈕,則可以通過使用IsDefault=true
輕松地將其設置為默認按鈕(在此處寫了有關執行此操作的提示以及取消轉義的提示)。
除此之外,您還必須在某個地方編寫它(但是,您是否不想使用文本框?您可以默認選擇它,或者如果您沒有焦點,可以選擇進入它),並且可以處理Enter
key鍵以“捕獲” Enter
否則。
如果要確保每次按下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;
}
我建議您閱讀有關WPF事件基本的氣泡,隧道和直接事件的文章 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.