2009-04-17 40 views
0

我在Form對象的OnKeyDown中收到按鍵。當滿足一些條件時(例如鍵擊是可打印字符而不是熱鍵),我想將鍵轉發到表單上的文本控件,並將焦點設置爲文本控件,以便用戶可以繼續輸入。我能夠使用MapVirtualKey對輸入的字符進行解碼,但我只能得到「未移位」字符(總是大寫)。使用ToUnicodeEx看起來像太多的PITA。在WinForms中將按鍵轉發到另一個控件

這樣做的最好方法是什麼?沒有辦法簡單地轉發Windows消息本身嗎?

難道我不能攔截ProcessKeyPreview或其他類似的東西,並將其轉發給文本控件的ProcessKeyPreview?任何類似的思路?

凹凸:沒有答案!

回答

1

我這樣做有以下

private void MyFunkyForm_KeyDown(object sender, KeyEventArgs e) 
{ 
    // to avoid duplicate letters in textbox :-) 
    if (textBox2.Focused == false) 
    { 

     // get the char from the Keycode 
     char inputChar = (char)e.KeyCode; 
     if (char.IsLetterOrDigit(inputChar)) 
     { 
      // if letter or number then add it to the textbox 
      textBox2.Text += inputChar; 
     } 

     // set focus 
     textBox2.Focus(); 
     // set cursor to the end of text, no selection 
     textBox2.SelectionStart = textBox2.Text.Length; 
    } 
} 
單一形式
相關問題