2010-11-11 2 views
6

Utilizzo di C# come posso selezionare tutto il testo in una casella di testo quando faccio doppio clic? Il mio testo contiene spazi "Questo è un test", quando faccio doppio clic per default viene evidenziata solo una parola, come posso evidenziare tutto il testo?C# come posso selezionare tutto il testo in una casella di testo quando faccio doppio clic?

Quello che sto cercando di ottenere è un modo rapido per gli utenti di cancellare la texbox del testo, il testo supera la lunghezza della casella in modo che non è possibile selezionare la fine e trascinare indietro per eliminare, è necessario fare clic e usa il backspace e cancella i tasti per cancellare il testo.

Grazie Alison

+0

La "soluzione" comune sta avendo tutto selezionato (vedi risposta Ardman) nell'evento OnFocus. Fare doppio clic per selezionare tutto il testo non è molto comune, quindi gli utenti non lo sapranno. –

+0

Si può anche considerare di selezionare tutto il testo nella casella di testo quando riceve lo stato attivo (con il tasto Tab o un clic del mouse, come la barra degli indirizzi in un browser Web, vedere l'evento "OnFocus" per la casella di testo). Ciò fornirebbe comunque un modo rapido per eliminare il testo senza perdere quello che molti utenti considererebbero il comportamento predefinito di poter fare doppio clic per selezionare una parola. –

+0

potrebbe anche essere utile per insegnare ai tuoi utenti su 'Ctrl + a', o rendere il testo del TextBox (potrebbe non essere possibile a causa di problemi di progettazione/schermo) – vlad

risposta

4
TextBox tb = new TextBox(); 
tb.SelectAll(); 

Il TextBox ha un metodo SelectAll che si può usare. Aggiungilo nel tuo gestore di eventi a doppio clic.

1

Supponendo che stiamo parlando WindowsForms, allora tutto ciò che dovete fare è collegare un'EventHandler per l'evento DoubleClick e invocare SelectAll

private void sampleTextBox_DoubleClick(object sender, EventArgs e) 
{ 
    sampleTextBox.SelectAll(); 
} 
+0

Si potrebbe fare invece: ((TextBox) mittente) .SelectAll(); ... che è un po 'più ordinato – nashwan

1

Il controllo casella di testo espone le proprietà SelectionStart e Selection Length.

È sufficiente collegare semplicemente l'evento di doppio clic della casella di testo per impostare tali proprietà.

SelectionStart sarà 0. SelectionLength sarà la lunghezza del testo (facilmente determinata dalla proprietà Text).

In corso di modifica: La soluzione di cui sopra SelectAll() è molto più semplice.

+3

Bit overkill quando c'è un metodo SelectAll. –

+0

Infatti. Ricordo SelectionStart & Length da un codice in cui avevo bisogno di evidenziare una parte del testo. Non avevo nemmeno capito che c'era una soluzione molto più semplice. Questo è ciò che l'intellisense è per. –

2

clic triple potrebbe selezionare l'intero paragrafo. Se cambi il comportamento del doppio clic, la selezione delle parole potrebbe essere un po 'difficile.