當我按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