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
Setze mal an das Ende deiner TextBox_KeyUp-Methode "e.Handled = true".
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.
@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
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?
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
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);
}
}
danke für die lösung werde ich mir mal ansehen!
aber eigenartig, dass so einfache dinge nicht "ordentlich" funktionieren,...
lg
rizi
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
Mal wieder. Dabei stelle ich fest, dass ich vieles vergessen habe und hier erfolgreich suche - teilweise auch in meinen Beiträgen fündig werde.