Laden...

TextBox erzeugt ungewolltes "beep"

Erstellt von rizi vor 14 Jahren Letzter Beitrag vor 8 Jahren 2.759 Views
R
rizi Themenstarter:in
402 Beiträge seit 2005
vor 14 Jahren
TextBox erzeugt ungewolltes "beep"

hi, habe schon nach dem problem gegoogelt und auch hier wurde es schon behandelt, aber ich kann keine Lösung finden.

Mein Problem ist folgendes, ich habe eine TextBox, dort handle ich das KeyUp-Event, hier der Code dazu:


private void TextBox_KeyUp(object sender, KeyEventArgs e)
        {
            var textBox = sender as TextBox;

            if (textBox != null)
            {
                if (e.Control && e.KeyCode == Keys.A)
                {
                    textBox.SelectAll();
                }
            }
        }

mit diesem Event realisiere ich lediglich, dass mit STRG+A der ganze Text markiert wird.

und genau wenn ich STRG+A drücke dann funktioniert zwar alles so wie es soll, allerdings höre ich ein "beep".

Eine Lösungsmöglichkeit ist das Key_Pressed Event zu abonnieren und dort handled=true zu setzten, dass funktioniert, d.h ich höre keine "beep" mehr, allerdings kann ich dann mit STRG+V keinen Text aus der Zwischenablage in die TextBox einfügen, entferne ich das handled = true im Key_Pressed Event funktioniert alles wunderbar bis auf das nervige "beep"!!

hat jemand von euch eine Idee/Tipp??

Danke vielmals
rizi

R
164 Beiträge seit 2008
vor 14 Jahren

Setze mal an das Ende deiner TextBox_KeyUp-Methode "e.Handled = true".

5.742 Beiträge seit 2007
vor 14 Jahren

Hallo rizi,

wenn ich mich nicht 100%ig irre, ist das doch das Standardverhalten?
Der Inhalt jeder Textbox unter Windows lässt sich mit STRG+A markieren.

R
rizi Themenstarter:in
402 Beiträge seit 2005
vor 14 Jahren

@rechner, dass habe ich bereits probiert, leider ohne erfolg

@winSharp93, dass dachte ich bisher auch,aber dem ist nicht so, ohne meinem Code im KeyUp-Event, passiert bei STRG+A leider gar nichts!

lg
rizi

5.742 Beiträge seit 2007
vor 14 Jahren

ohne meinem Code im KeyUp-Event, passiert bei STRG+A leider gar nichts!

Dafür ist sicherlich irgendwelcher anderer Code verantwortlich.

Hast du sonst noch irgendwelche Ereignisse der TextBox abonniert oder handelt es sich gar um eine Ableitung von TextBox?

R
rizi Themenstarter:in
402 Beiträge seit 2005
vor 14 Jahren

das ist eine "ganz normale" textbox aus der toolbox, keine ableitung gar nichts. und das keyUp-Event ist das einzige Event das ich aboniert habe. es gibt leidiglich noch einen button der ein klick-event aboniert hat aber das sollte damit nichts zu tun haben.

edit:
habe jetzt für testzwecke eine neue form mit einer textbox drauf erstellt, keine events aboniert und genau das gleiche standardmäßig passiert bei STRG+A garnichts!!!

Was ich noch vergessen hatte zu erwähnen, bei der TextBox habe ich Multiline auf true gesetzt!!!

lg
rizi

R
164 Beiträge seit 2008
vor 14 Jahren

Ich habe mal ein paar Versuche angestellt:
-Textboxen mit "Multiline = false" verursachen kein Beep und markieren alles, wenn man "STRG + A" drückt

-Bei Textboxen mit "Multiline = true" verursacht das KeyPress-Event ein Beep, wenn man die STRG-Taste und einen Buchstaben drückt und diese Tastenkombination nicht bekannt ist (STRG + V ist zum Beispiel bekannt). Weiterhin muss e.Handled = false sein, damit es beept.

-"STRG + A" als KeyChar ist "1"

Lösung: Die Textbox-Klasse wird geerbt, in der OnKeyPress-Methode wird "STRG + A" abgefangen und "e.Handled = true" gesetzt.


class NoBeepBox : TextBox
      {
         protected override void OnKeyPress(KeyPressEventArgs e)
         {
            if (e.KeyChar == 1)
            {
               this.SelectAll();
               e.Handled = true;
            }

            base.OnKeyPress(e);
         }
      }

R
rizi Themenstarter:in
402 Beiträge seit 2005
vor 14 Jahren

danke für die lösung werde ich mir mal ansehen!
aber eigenartig, dass so einfache dinge nicht "ordentlich" funktionieren,...

lg
rizi

J
3.331 Beiträge seit 2006
vor 8 Jahren

Nur der Vollständigkeit halber:

eigenartig, dass so einfache dinge nicht "ordentlich" funktionieren,...

Ich bin gerade auch über das Problem gestolpert und habe hier die Lösung (KeyPress-Code von rechner) gefunden. Ich war ebenfalls überrascht, aber .NET arbeitet "as designed", siehe TextBoxBase.ShortcutsEnabled:

The TextBox control does not support the CTRL+A shortcut key when the Multiline property value is true.

Es ist schön, dass über myCSharp eine einfache Lösung zu finden ist. Jürgen

F
10.010 Beiträge seit 2004
vor 8 Jahren

Dich gibt es noch?

J
3.331 Beiträge seit 2006
vor 8 Jahren

Mal wieder. Dabei stelle ich fest, dass ich vieles vergessen habe und hier erfolgreich suche - teilweise auch in meinen Beiträgen fündig werde.