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?
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%Dies ist zu lange eine Antwort auf Nobugz Antwort, um in einen Kommentar zu passen. Wenn Sie Nobugz-Code wie folgt verwenden:
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.