2013-08-29 28 views

回答

6

PreviewKeyDown事件中,沒有直接的方法可以使用KeyEventArgs中給出的字符輸入大小寫。您可以嘗試使用PreviewTextInput事件,該事件將給出在TexCompositionEventArgsText屬性中輸入的實際字符。

+0

-1有*是一種檢測輸入字符的方法。 – Sheridan

+0

@Sheridan我說過沒有直接的方法來使用eventargs中給出的東西,我沒有說沒有任何方法。你的方式不直接。 –

+0

哦,拜託......如果檢查條件'Keyboard.Modifiers == ModifierKeys.Shift'不是直接的,那麼我不知道是什麼。無論哪種方式,我都支持我的投票,因爲你後來不必要地推薦完全使用不同的事件......我確信你在這裏的時間已經給出了許多很好的答案,但只是面對它,這個特定的答案是不是一個好的。 – Sheridan

0

基本上你比較哪個鍵你想要的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(); 
} 
+4

如果打開大寫鎖定,您會如何處理? –

+0

@MarkHall,我爲你更新了我的答案。 – Sheridan

+1

我之所以說明做了什麼,是因爲一旦CapLock失效,它就會反轉Shift鍵的功能,再加上大寫字母是失效時的默認值。 –