7 Stimmen

"KeyPress"-Ereignis für WinForms-Textfeld fehlt?

Ich versuche, ein "KeyPress"-Ereignis in einem Textfeld (WinForm) hinzuzufügen.

this.textBox1.KeyPress += new System.Windows.Forms.KeyPressEventHandler(CheckKeys);

und hier im Inneren der 'CheckKeys':

private void CheckKeys(object sender, System.Windows.Forms.KeyPressEventArgs e)
{
    if (e.KeyChar == (char)13)
    {
        // Enter is pressed - do something

    }
}

Die Idee dahinter ist, dass, sobald ein Textfeld im Fokus ist und die 'Enter'-Taste gedrückt wurde, etwas passiert...

Mein Rechner kann jedoch das Ereignis "KeyPress" nicht finden. Ist mit meinen Codes etwas nicht in Ordnung?

UPDATE:

Ich habe auch versucht, KeyDown anstelle von KeyPress einzusetzen:

private void textBox1_KeyDown(object sender, System.Windows.Input.KeyEventArgs e)
{

    if (e.Key == Key.Return)

        // Enter is pressed - do something
    }
}

Funktioniert aber immer noch nicht...

11voto

Hans Passant Punkte 894572

Sie mischen Klassenbibliotheken, verwenden Sie keine Windows Forms-Klassen in einem WPF-Projekt. Lassen Sie es so aussehen:

  public partial class Window1 : Window {
    public Window1() {
      InitializeComponent();
      this.textBox1.KeyDown += new KeyEventHandler(textBox1_KeyDown);
    }

    private void textBox1_KeyDown(object sender, KeyEventArgs e) {
      if (e.Key == Key.Enter) {
        MessageBox.Show("Enter!");
        e.Handled = true;
      }
    }
  }

5voto

Anders Abel Punkte 65873

Haben Sie sich die Dokumentation en KeyPress ? Darin heißt es ausdrücklich, dass Das KeyPress-Ereignis wird von Nicht-Zeichen-Tasten nicht ausgelöst; die Nicht-Zeichen-Tasten lösen jedoch die Ereignisse KeyDown und KeyUp aus . Die Verwendung eines dieser Ereignisse sollte stattdessen funktionieren.

-4voto

Sanford Punkte 1

Versuchen Sie die folgenden Schritte wird es funktionieren, bcoz ich habe es getestet.

  1. Wählen Sie das Textfeld aus, klicken Sie mit der rechten Maustaste darauf, und klicken Sie dann auf Eigenschaften.
  2. klicken Sie auf Ereignis, dann doppelklicken Sie auf KeyPress
  3. und geben Sie dann den folgenden Code ein.

    private void textBox2_KeyPress(object sender, KeyPressEventArgs e)  
    {  
        if (e.KeyChar == (char)13)  
        {            
            //press Enter do Something Like i have messagebox below to show "wow"
            MessageBox.Show("wow"); 
        }
        else
        {
        }
    }

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X