2009-02-20 4 views

Répondre

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

(Notez que la propriété Text est caché dans IntelliSense, mais il est là)

+10

@Jon: Darn intellisense: -/Bon appel avec la propriété Text. –

+5

J'essayais juste de faire ceci pendant la construction de forme (mettre le foyer à NumericUpDown spécifique et sélectionner tout son texte). J'ai dû appeler 'Select()' AND 'Select (0, NumericUpDown1.Text.Length);', le premier à définir le focus et le second à sélectionner le texte. Donc, une note pour quelqu'un d'autre qui vient ici à la recherche d'un moyen de faire ce que je faisais: Vous devez faire ces deux appels pour obtenir le résultat que vous voulez, même si les deux sont nommés la même chose (j'ai attendu l'appel à 'Select (start, length)' pour définir aussi le focus comme 'Select()' did) –

+0

"Si vous utilisez le bouton de tabulation, ce code fonctionnera bien mais si vous le faites avec un clic, passe à travers la méthode, il ne sélectionne pas le texte.Ma supposition est que ce code est appelé avant un code de cadre interne qui met le curseur de réinitialiser la sélection.Pour le contourner, vous pouvez mettre ce même code dans le gestionnaire d'événement click ", 'n0n4m3' http://social.msdn.microsoft.com/forums/en-US/csharpgeneral/thread/28354bc2-3903-4be4-9c2c-3249319b59fd – PUG

2

J'ai créé une méthode d'extension pour y parvenir:

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

Essayez

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

Pouvez-vous ajouter des éclaircissements quant à la raison pour laquelle cela fonctionne, quelles sont les différentes pièces de ce produit? –

+0

Cela échouera si vous avez des décimales et la valeur sans fraction (ex: 99.00) la valeur sera 99 donc la longueur de la valeur sera 2 – Ahmed

4

Je regardais autour de i eu le même problème et cela fonctionne pour moi, d'abord sélectionner l'élément et le second sélectionne le texte, elle pourra être utile à l'avenir

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

C'est ce que je pensais faire avant de réaliser que NumericUpDown.Text n'existe pas, vous ne recevrez pas IntelliSense pour vous le montrer, vous pourriez même essayer de vous auto-compléter à TextAlign. "Le texte n'a aucun effet sur l'apparence du contrôle NumericUpDown, il est donc masqué dans le concepteur et dans IntelliSense." -Microsoft J'ai aussi testé l'entrée des valeurs avec l'interface .Text car l'autisme fonctionne comme prévu, en lançant des exceptions pour les valeurs non numériques et en remplaçant ce que vous entrez avec les valeurs max et min si vous les excédez. – user2163234

7

Je voulais ajouter à cela pour les futurs utilisateurs qui ont recherché Tab and Click.

réponse Jon B fonctionne parfaitement pour Tab, mais je devais modifier pour inclure cliquez sur

sera ci-dessous sélectionner le texte si vous onglet ou cliquez sur. Si vous cliquez et vous entrez dans la case il choisira le texte . Si vous êtes déjà concentré sur la boîte, le clic fera ce qu'il fait normalement.

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; 
     } 
    } 

Vous pouvez l'utiliser pour plusieurs contrôles numericUpDown. Juste besoin de définir les événements Enter et MouseDown

-1

J'ai eu plusieurs boîtes de numericupdown et voulait réaliser cela pour tous. J'ai créé:

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

Puis en associant cette fonction avec la touche Entrée événement pour chaque case (que je ne l'ai pas), mon objectif a été atteint. Cela m'a pris un moment pour comprendre car je suis un débutant. J'espère que cela aidera quelqu'un d'autre

+0

c'est effectivement un doublon de la réponse acceptée –

+0

@AidanRyan En fait, puisque cette réponse utilise 'sender' au lieu d'une cible d'objet fixe, elle est sans doute meilleure que la réponse acceptée. – bartonjs

+0

Ceci répond à la question d'origine plus une question qui n'a pas été posée. La gestion d'un événement commun entre les contrôles est une préoccupation différente, indépendamment de la sélection de tout le texte ou de tout autre élément que vous pourriez vouloir faire avec l'événement. Vraiment, il ajoute juste du bruit. –

Questions connexes