Quando l'utente si collega al mio NumericUpDown
Vorrei che tutto il testo fosse selezionato. È possibile?Come selezionare tutto il testo in Winforms NumericUpDown sulla scheda in?
risposta
private void NumericUpDown1_Enter(object sender, EventArgs e)
{
NumericUpDown1.Select(0, NumericUpDown1.Text.Length);
}
(Si noti che la proprietà Text è nascosto in Intellisense, ma è lì)
ho creato un metodo di estensione per raggiungere questo obiettivo:
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
Prova
myNumericUpDown.Select(0, myNumericUpDown.Value.ToString().Length);
Puoi aggiungere qualche chiarimento sul motivo per cui funziona, quali sono i vari pezzi di questo? –
Questo fallirà se si ha una posizione decimale e il valore senza frazione (es: 99,00) il valore sarà 99, quindi la lunghezza del valore sarà 2 – Ahmed
Stavo guardando in giro ho avuto lo stesso problema e questo funziona per me, prima selezionare l'elemento e il secondo seleziona il testo, spero che aiuta in futuro
myNumericUpDown.Select();
myNumericUpDown.Select(0, myNumericUpDown.Value.ToString().Length);
Questo è ciò che stavo considerando di fare prima che mi rendessi conto che NumericUpDown.Text esiste, non si ottiene semplicemente IntelliSense per mostrarlo a voi, si potrebbe anche provare a completare automaticamente a TextAlign. "Il testo non ha alcun effetto sull'aspetto del controllo NumericUpDown, pertanto è nascosto nel designer e da IntelliSense." -Microsoft Ho anche testato l'immissione di valori con l'interfaccia .Text perché l'autismo e funziona come previsto, generando eccezioni per valori non numerici e sostituendo ciò che si immette con i valori massimi e minimi se li si supera. – user2163234
volevo per aggiungere a questo per le persone future che sono state cercate Tab e Click.
Jon B risposta funziona perfetto per Tab, ma avevo bisogno di modificare per includere cliccare
seguito selezionerà il se scheda testo in o fare clic su. Se si fa clic e si entra la casella allora sarà selezionare il testo . Se sei già concentrato sulla scatola, il clic farà ciò che normalmente fa.
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;
}
}
È possibile utilizzare questo per più controlli numericoUpDown. Ho solo bisogno di impostare gli eventi Enter e MouseDown
Avevo più caselle numericupdown e volevo ottenere questo per tutti. Ho creato:
private void num_Enter(object sender, EventArgs e)
{
NumericUpDown box = sender as NumericUpDown;
box.Select();
box.Select(0, num_Shortage.Value.ToString().Length);
}
Poi associando questa funzione con l'evento Enter per ciascuna casella (che non ho fatto), è stato raggiunto il mio obiettivo. Mi ci è voluto un po 'per capire come sono un principiante. Spero che questo aiuti qualcun altro fuori
questo è effettivamente un duplicato della risposta accettata –
@AidanRyan In realtà, poiché questa risposta utilizza il 'sender' invece di un target di oggetto fisso, è probabilmente meglio della risposta accettata. – bartonjs
Questo risponde alla domanda originale più una domanda che non è stata posta. Come gestire un evento comune attraverso i controlli è una preoccupazione diversa, indipendentemente dalla selezione di tutto il testo o da qualsiasi altra cosa che si possa desiderare di fare con l'evento. In realtà aggiunge solo rumore. –
@Jon: Dannato intellisense: -/Buona chiamata con la proprietà Text. –
Stavo solo provando a farlo durante la costruzione del modulo (imposta lo stato attivo su un determinato NumericUpDown e seleziona tutto il suo testo). Ho dovuto chiamare 'Select()' AND 'Select (0, NumericUpDown1.Text.Length);', il primo per impostare lo stato attivo e il secondo per selezionare il testo. Quindi, una nota per chiunque altro venga qui in cerca di un modo per fare ciò che stavo facendo: devi effettuare entrambe le chiamate per ottenere il risultato desiderato, anche se entrambi hanno lo stesso nome (ho continuato a ricevere la chiamata per selezionare (inizio, lunghezza) 'anche per impostare il fuoco come' Select() 'did) –
" se si concentra il controllo usando il tasto tab, questo codice andrà bene ma se lo si focalizza con un clic, anche se passa attraverso il metodo, non selezionerà il testo, suppongo che questo codice venga chiamato prima del codice di un framework interno che posiziona il cursore al reset della selezione, per bypassare questo codice è possibile inserire nel gestore di eventi click ", 'n0n4m3' http://social.msdn.microsoft.com/forums/en-US/csharpgeneral/thread/28354bc2-3903-4be4-9c2c-3249319b59fd – PUG