2009-02-20 8 views

Respuesta

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

(Tenga en cuenta que la propiedad de texto se oculta en Intellisense, pero está ahí)

+10

@Jon: Darn intellisense: -/Buena llamada con la propiedad Text. –

+5

Solo intentaba hacer esto durante la construcción del formulario (establecí el foco en un NumericUpDown específico y seleccioné todo su texto). Tuve que llamar a 'Seleccionar()' Y 'Seleccionar (0, NumericUpDown1.Text.Length);', el primero para establecer el foco y el segundo para seleccionar el texto. Entonces, una nota para cualquier persona que venga aquí buscando una manera de hacer lo que estaba haciendo: debe hacer ambas llamadas para obtener el resultado que desea, incluso aunque ambas tengan el mismo nombre (seguí esperando la llamada). para 'Seleccionar (inicio, longitud)' para configurar también el foco como 'Seleccionar()') –

+0

"si enfoca el control usando la tecla de tabulación, este código funcionará bien pero si lo enfoca con un clic, aunque pasa por el método, no seleccionará el texto. Supongo que este código se llama antes de un código de marco interno que pone el cursor restableciendo la selección. Para omitir esto puedes poner este mismo código en el controlador de eventos click ", 'n0n4m3' http://social.msdn.microsoft.com/forums/en-US/csharpgeneral/thread/28354bc2-3903-4be4-9c2c-3249319b59fd – PUG

2

creé un método de extensión de lograr esto:

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

Trate

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

¿Puede agregar alguna aclaración sobre por qué funciona, qué hacen las diversas piezas de esto? –

+0

Esto fallará si tiene decimales y el valor sin fracción (por ejemplo, 99.00) el valor será 99, por lo que la longitud del valor será 2 – Ahmed

4

que estaba buscando alrededor que tenía el mismo problema y esto funciona para mí, primero seleccione el elemento y el segundo selecciona el texto, espero que ayude en el futuro

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

Esto es lo que estaba considerando hacer antes de darme cuenta de que NumericUpDown.Text existe, simplemente no obtienes IntelliSense para mostrártelo, incluso puedes obtenerlo intentando autocompletarlo a TextAlign. "El texto no afecta la apariencia del control NumericUpDown, por lo tanto, está oculto en el diseñador y en IntelliSense". -Microsoft también probé ingresando valores con la interfaz .Text porque el autismo funciona como se esperaba, lanzando excepciones para valores no numéricos y reemplazando lo que ingresas con los valores máximo y mínimo si los superas. – user2163234

7

quería para agregar a esto para las personas futuras que han buscado Tab y Click.

Jon B respuesta funciona perfecto para Tab pero necesitaba modificar para incluir clic

A continuación se seleccionará el texto si pestaña en o haga clic en. Si hace clic y entrar en la caja a continuación, se selecciona el texto . Si ya está enfocado en el cuadro, el clic hará lo que normalmente hace.

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

Puede usar esto para múltiples controles numericUpDown. Solo necesito configurar Enter y MouseDown Events

-1

Tenía varias cajas numéricas y quería lograr esto para todos. He creado:

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

A continuación, mediante la asociación de esta función con el evento Enter para cada cuadro (que no lo hice), se logró mi objetivo. Me tomó un tiempo darme cuenta ya que soy un principiante. Espero que esto ayude a alguien más

+0

esto es efectivamente un duplicado de la respuesta aceptada –

+0

@AidanRyan En realidad, dado que esta respuesta usa 'remitente' en lugar de un objetivo de objeto fijo, es posiblemente mejor que la respuesta aceptada. – bartonjs

+0

Responde a la pregunta original más una pregunta que no se hizo. Cómo manejar un evento común entre controles es una preocupación diferente, independientemente de seleccionar todo el texto o cualquier otra cosa que desee hacer con el evento. Realmente solo agrega ruido. –

Cuestiones relacionadas