(使用WPF) 我試圖檢測何時Ctrl + 輸入被擊中。 所以我想這代碼:檢測Ctrl + Enter
if (e.Key == Key.Return && (e.Key == Key.LeftCtrl || e.Key == Key.RightCtrl))
{
//Do Something
}
顯然,這是不正確的,因爲它不工作。 任何人都可以幫助我,解釋什麼是正確的方式?
感謝名單
(使用WPF) 我試圖檢測何時Ctrl + 輸入被擊中。 所以我想這代碼:檢測Ctrl + Enter
if (e.Key == Key.Return && (e.Key == Key.LeftCtrl || e.Key == Key.RightCtrl))
{
//Do Something
}
顯然,這是不正確的,因爲它不工作。 任何人都可以幫助我,解釋什麼是正確的方式?
感謝名單
e.Key
顯然可以不等於在相同的事件多於一個的不同的值。
您需要處理其中一個使用KeyEventArgs
的事件,您會發現諸如Control
和Modifiers
之類的屬性,它們將幫助您檢測組合。
使用KeyPressEventArgs
的KeyPress
事件只是沒有足夠的信息。
Drat,你說WPF不是你。它看起來像你需要e.KeyboardDevice.Modifiers
。
我想你需要一個SpecialKey Handler。 我一派有點找到了解決辦法here.
繼從稱作鏈接代碼可以解決你的問題:
void SpecialKeyHandler(object sender, KeyEventArgs e)
{
// Ctrl + N
if ((Keyboard.Modifiers == ModifierKeys.Control) && (e.Key == Key.N))
{
MessageBox.Show("New");
}
// Ctrl + O
if ((Keyboard.Modifiers == ModifierKeys.Control) && (e.Key == Key.O))
{
MessageBox.Show("Open");
}
// Ctrl + S
if ((Keyboard.Modifiers == ModifierKeys.Control) && (e.Key == Key.S))
{
MessageBox.Show("Save");
}
// Ctrl + Alt + I
if ((Keyboard.Modifiers == (ModifierKeys.Alt | ModifierKeys.Control)) && (e.Key == Key.I))
{
MessageBox.Show("Ctrl + Alt + I");
}
}
if (e.KeyChar == 10)
{
///Code
}
或者
if ((Char)e.KeyChar == '\n')
{
///Code
}
if (e.Modifiers == Keys.Control && e.KeyCode == Keys.Enter)
感謝名單! 'e.KeyboardDevice.Modifiers'應該幫助我,我想:) – Dante1986 2012-04-24 06:50:51