2009-02-20 2 views

Antwort

95
private void NumericUpDown1_Enter(object sender, EventArgs e) 
{ 
    NumericUpDown1.Select(0, NumericUpDown1.Text.Length); 
} 

(Beachten Sie, dass die Eigenschaft Text in Intellisense versteckt ist, aber es ist da)

+10

@Jon: Darn intellisense: -/Gute Anruf mit der Text-Eigenschaft. –

+5

Ich habe gerade versucht, dies während der Formularkonstruktion zu tun (Fokus auf ein bestimmtes NumericUpDown setzen und seinen gesamten Text auswählen). Ich musste 'Select()' UND 'Select (0, NumericUpDown1.Text.Length);' aufrufen, wobei der erste den Fokus und der zweite den Text auswählte. Also, eine Notiz für alle anderen, die hierher kommen und nach einer Möglichkeit suchen, das zu tun, was ich getan habe: Du musst beide Aufrufe machen, um das gewünschte Ergebnis zu erhalten, obwohl beide dasselbe benannt sind (ich habe den Anruf immer erwartet) zu 'Select (start, length)', um auch den Fokus wie 'Select()' did) –

+0

"Wenn Sie das Steuerelement mit der Tab-Taste fokussieren, wird dieser Code gut, aber wenn Sie es mit einem Klick fokussieren, obwohl es Durchläuft die Methode, wird den Text nicht auswählen. Ich schätze, dass dieser Code vor einem internen Framework-Code aufgerufen wird, der den Cursor auf die Auswahl setzt. Um dies zu umgehen, können Sie denselben Code in den Click-Event-Handler einfügen. " 'n0n4m3' http://social.msdn.microsoft.com/forums/en-US/csharpgeneral/thread/28354bc2-3903-4be4-9c2c-3249319b59fd – PUG

2

ich eine Erweiterungsmethode erstellt, dies zu erreichen:

VB:

<Extension()> 
Public Sub SelectAll(myNumericUpDown As NumericUpDown) 
    myNumericUpDown.Select(0, myNumericUpDown.Text.Length) 
End Sub 

C#:

public static void SelectAll(this NumericUpDown numericUpDown) 
    numericUpDown.Select(0, myNumericUpDown.Text.Length) 
End Sub 
-1

Versuchen

myNumericUpDown.Select(0, myNumericUpDown.Value.ToString().Length); 
+0

Kannst du irgendeine Erklärung hinzufügen, warum es funktioniert, was die verschiedenen Teile davon tun? –

+0

Dies wird fehlschlagen, wenn Sie eine Dezimalstelle haben und der Wert ohne Bruch (Bsp .: 99,00) der Wert wird 99 sein, so dass die Länge des Wertes wird 2 – Ahmed

4

Ich war auf der Suche um hatte ich das gleiche Problem und das funktioniert für mich, zuerst das Element anwählen und die zweite wählt den Text, hoffen, dass es in Zukunft hilft

myNumericUpDown.Select(); 
myNumericUpDown.Select(0, myNumericUpDown.Value.ToString().Length); 
+0

Dies ist, was ich in Betracht gezogen habe, bevor ich das NumericUpDown.Text erkannte existiert, Sie werden IntelliSense nur nicht bekommen, um es Ihnen zu zeigen, Sie können es sogar versuchen, Sie zu TextAlign zu vervollständigen. "Der Text hat keine Auswirkungen auf die Darstellung des NumericUpDown-Steuerelements; daher ist es im Designer und in IntelliSense verborgen." -Microsoft Ich habe auch die Eingabe von Werten mit der .Text-Schnittstelle getestet, weil Autismus funktioniert und wie erwartet funktioniert, wobei Ausnahmen für nicht-numerische Werte ausgelöst werden und die eingegebenen Werte durch Max- und Min-Werte ersetzt werden, wenn Sie sie überschreiten. – user2163234

7

Ich wollte um dies für zukünftige Personen hinzuzufügen, die nach Tab und Click gesucht haben.

Jon B Antwort arbeitet für Tab perfekt, aber ich brauchte zu gehören zu ändern, um

klicken

wählt unter den Text, wenn Sie mit der Tabulatortaste oder klicken Sie in. Wenn Sie auf und geben Sie die Box, dann wird es den Text auswählen . Wenn Sie sich bereits auf die Box konzentrieren, wird der Klick tun, was er normalerweise tut.

bool selectByMouse = false; 

    private void quickBoxs_Enter(object sender, EventArgs e) 
    { 
     NumericUpDown curBox = sender as NumericUpDown; 
     curBox.Select(); 
     curBox.Select(0, curBox.Text.Length); 
     if (MouseButtons == MouseButtons.Left) 
     { 
      selectByMouse = true; 
     } 
    } 

    private void quickBoxs_MouseDown(object sender, MouseEventArgs e) 
    { 
     NumericUpDown curBox = sender as NumericUpDown; 
     if (selectByMouse) 
     { 
      curBox.Select(0, curBox.Text.Length); 
      selectByMouse = false; 
     } 
    } 

Sie können dies für mehrere numerischeUpDown-Steuerelemente verwenden. Nur müssen die Enter und MouseDown Events

-1

Ich hatte mehrere numerische updown Box und wollte dies für alle erreichen. Ich erstellt:

private void num_Enter(object sender, EventArgs e) 
{ 
    NumericUpDown box = sender as NumericUpDown; 
    box.Select(); 
    box.Select(0, num_Shortage.Value.ToString().Length); 
} 

Dann wird durch diese Funktion mit der für jedes Feld eingeben Ereignis zuordnet (was ich nicht getan habe), war mein Ziel erreicht. Nahm mich eine Weile, um herauszufinden, wie ich ein Anfänger bin. Hoffe, das hilft jemand anderen aus

+0

Dies ist effektiv ein Duplikat der angenommenen Antwort –

+0

@AidanRyan Eigentlich, da diese Antwort "Absender" anstelle eines festen Objekts Ziel verwendet, ist es wohl besser als die angenommene Antwort. – bartonjs

+0

Dies beantwortet die ursprüngliche Frage plus eine Frage, die nicht gestellt wurde. Die Behandlung eines gemeinsamen Ereignisses über Steuerelemente hinweg ist ein anderes Problem, unabhängig davon, ob Sie den gesamten Text auswählen oder etwas anderes, was Sie sonst noch mit dem Ereignis tun möchten. Wirklich, es fügt nur Lärm hinzu. –

Verwandte Themen