2009-04-17 17 views
0

Ich erhalte einen Tastendruck in einem Form Objekt OnKeyDown. Wenn einige Bedingungen erfüllt sind (z. B. der Tastendruck ist ein druckbares Zeichen und kein Hotkey), möchte ich den Schlüssel an ein Textsteuerelement im Formular weiterleiten und den Fokus auf das Textsteuerelement setzen, damit der Benutzer weiter tippen kann. Ich bin in der Lage, das mit MapVirtualKey eingegebene Zeichen zu entschlüsseln, aber ich bekomme nur das "unverschobene" Zeichen (immer in Großbuchstaben). Die Verwendung von ToUnicodeEx scheint zu viel PITA zu sein.Weiterleiten eines Tastenanschlags an ein anderes Steuerelement in WinForms

Was ist der beste Weg, dies zu tun? Gibt es keine Möglichkeit, die Windows-Nachricht selbst weiterzuleiten?

Kann ich das ProcessKeyPreview oder etwas ähnliches nicht abfangen und es an die ProcessKeyPreview des Textcontrollers weiterleiten? Irgendwelche Ideen in ähnlicher Form?

Bump: Keine Antworten!

Antwort

1

Ich tat dies auf eine einzige Form mit der folgenden

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; 
    } 
} 
Verwandte Themen