Wie man Fensterfehler-Ton beim Eingeben von 'Enter' oder 'Esc' stoppt

7

Ich habe ein Formular mit einem einzigen Textfeld. Keine anderen Kontrollen. Immer wenn ich die "Enter" -Taste oder die "Esc" -Taste eintippe, funktioniert das Formular wie gewünscht; aber ich höre diesen schrecklichen Windows-Error-Sound. Der Code sieht wie folgt aus ...

%Vor%

Ich kann es "hacken" und den Lärm stoppen, indem ich den folgenden Code zum Konstruktor des Formulars hinzufüge.

%Vor%

Wie ich sagte, verursacht dies, dass der Klang nicht spielt, aber ich denke, dass dies eine schlechte Form ist; zumal ich keine Schaltfläche auf dem Formular brauche.

Wer weiß, warum dies das Verhalten ist und ob es einen saubereren Weg gibt, den Fehlerton beim Abspielen zu stoppen?

    
John Kraft 30.12.2009, 22:49
quelle

3 Antworten

6

Es gibt einen "korrekeren" Fix, der unabhängig von der Anzahl der Steuerelemente funktioniert und dem Windows Forms-Designmodell folgt. Fügen Sie diesen Code in Ihr Formular ein:

%Vor%     
Hans Passant 30.12.2009, 23:50
quelle
12

Setzen Sie im KeyDown-Ereignis e.Handled = true und e.SuppressKeyPress = true .

    
Andrew 30.12.2009 22:55
quelle
2

Dies ist zu lange eine Antwort auf Nobugz Antwort, um in einen Kommentar zu passen. Wenn Sie Nobugz-Code wie folgt verwenden:

  1. Das Formular wird ausgeblendet , unabhängig davon, welches Steuerelement im Formular aktiv ist und den Tastatureingabefokus hat. Dies ist unabhängig davon, ob im Formular die KeyPreview-Eigenschaft auf "true" oder "false" gesetzt ist.

Hier ist, was Sie tun müssen, damit nur ein bestimmtes Steuerelement (in diesem Fall eine TextBox mit dem Namen 'textBox1') in ProcessCmdKeys Override ausgeblendet wird:

%Vor%

Natürlich, wenn Sie den Fall von mehreren Steuerelementen behandeln wollten, die verborgen werden müssen, könnten Sie eine 'switch-Anweisung oder was auch immer implementieren, um die msg.HWnd gegen zu testen: Hinweis Ich mache hier die Annahme, dass alle Steuerelemente Tastatur haben könnten Eingang wird einen gültigen HWnd haben.

Etwas Speicher (vage) einer Situation, in der ich diese Technik verwendet habe, und eine Texteingabesteuerung hatte irgendwie immer noch den Tastatureingabefokus ... wenn ich nicht vorhatte, es ... will mich dazu bringen, ein zusätzliches hinzuzufügen teste so:

%Vor%

Aber nehmen Sie das mit einem "Körnchen Salz", da ich nicht sicher sein kann, dass es notwendig ist.

    
BillW 31.12.2009 02:27
quelle

Tags und Links