2013-12-15 39 views
1

在一個KeyPressEvent我知道如何當CTRL鍵一次檢測,但後來我想CTRL + [什麼?]。價值KeyPressEventArgs.KeyChar與Ctrl鍵

隨着CTRL + KeyChar = 1,CTRL + 給出2等什麼是檢測CTRL + 一個輸入的最佳方式?

這裏是我的代碼:

private void textBox1_KeyPress(object sender, KeyPressEventArgs e) 
{ 
    if (ModifierKeys.HasFlag(Keys.Control)) 
    { 
     Console.Write("(Ctrl) "); 
    } 
    Console.WriteLine(Convert.ToString(Convert.ToInt32(e.KeyChar))); 
} 

進入一個bCTRL + 一個CTRL + b給出:

97 
98 
(Ctrl) 1 
(Ctrl) 2 

回答

1

我suggesti on是使用KeyDown事件而不是KeyPress,因爲KeyPress使用已處理的輸入。 KeyDown與「原始」數據一起工作(並不完全,但足以滿足您的需求)。 KeyDown事件處理程序有一個參數可以保存您需要的數據:KeyEventArgs

+0

是的,謝謝。這樣可行。 KeyDown似乎有它自己的一些怪癖(如果你按住ctrl鍵,事件會重複觸發),但這很容易解決。我會這樣做。 感謝您的回覆。 Steven – user3103570

+0

不客氣!你也可以看到KeyUp事件,也許它會對你更有用。 – Tony