如何獲取密鑰,其中一個使用PreviewKeyDownEvent按下。是的,KeyEventArgs返回被按下的Key。但我面臨的問題是,我不能夠區分較小和小寫字符如何獲得WPF中的PreviewKeyDownEvent中輸入的密鑰
我需要檢查,如果該人已按下或A或任何其它字符的情況下鑑別
感謝
如何獲取密鑰,其中一個使用PreviewKeyDownEvent按下。是的,KeyEventArgs返回被按下的Key。但我面臨的問題是,我不能夠區分較小和小寫字符如何獲得WPF中的PreviewKeyDownEvent中輸入的密鑰
我需要檢查,如果該人已按下或A或任何其它字符的情況下鑑別
感謝
在PreviewKeyDown
事件中,沒有直接的方法可以使用KeyEventArgs
中給出的字符輸入大小寫。您可以嘗試使用PreviewTextInput
事件,該事件將給出在TexCompositionEventArgs
Text
屬性中輸入的實際字符。
基本上你比較哪個鍵你想要的KeyEventArgs.Key
值:
private void PreviewKeyDownHandler(object sender, KeyEventArgs e)
{
if (e.Key == Key.A) DoSomething();
}
如果你想知道一個大寫字母是否被按下,則需要檢查SHIFT
鍵也被按下:
private void PreviewKeyDownHandler(object sender, KeyEventArgs e)
{
if (e.Key == Key.A && Keyboard.Modifiers == ModifierKeys.Shift) DoSomething();
}
UPDATE >>>
如果需要檢測Caps Lock
按鈕是否被按下,以及,你可以檢查此條件:
if (Keyboard.GetKeyStates(Key.CapsLock) == KeyStates.Toggled)
{
if (e.Key == Key.A) DoSomething();
}
如果打開大寫鎖定,您會如何處理? –
@MarkHall,我爲你更新了我的答案。 – Sheridan
我之所以說明做了什麼,是因爲一旦CapLock失效,它就會反轉Shift鍵的功能,再加上大寫字母是失效時的默認值。 –
-1有*是一種檢測輸入字符的方法。 – Sheridan
@Sheridan我說過沒有直接的方法來使用eventargs中給出的東西,我沒有說沒有任何方法。你的方式不直接。 –
哦,拜託......如果檢查條件'Keyboard.Modifiers == ModifierKeys.Shift'不是直接的,那麼我不知道是什麼。無論哪種方式,我都支持我的投票,因爲你後來不必要地推薦完全使用不同的事件......我確信你在這裏的時間已經給出了許多很好的答案,但只是面對它,這個特定的答案是不是一個好的。 – Sheridan