Ho questo semplice Userform, dove ho solo TextBox1
e TextBox2
. Inserisco del testo in entrambi. Supponiamo che lo stato attivo sia attivato (il cursore è posizionato su) TextBox2
. Quando clicco su TextBox1
, voglio che l'intero testo in questo controllo sia evidenziato (selezionato). Così io uso questo codice:Come selezionare il contenuto di una casella di testo dopo che è stato attivato?
Private Sub TextBox1_Enter()
With TextBox1
.SetFocus
.SelStart = 0
.SelLength = Len(.Text)
End With
MsgBox "enter event was fired"
End Sub
C'è un MsgBox
al termine che viene caricato, questo significa che i lavori di evento. Tuttavia, il testo non è evidenziato. Come risolvere questo?
Io uso l'evento Enter
e non vogliono utilizzare l'evento MouseDown
, perché ho bisogno del codice di lavorare anche quando il TextBox1
viene attivato programatically, quindi mi sento l'evento Enter
essere la scelta migliore, in quanto è sparato in entrambi i casi! Un altro svantaggio dell'evento MouseDown
è: quando faccio clic per la seconda volta su TextBox1
, non mi aspetto più che l'intero testo sia evidenziato, perché lo stato attivo è stato impostato sul primo clic e non è stato modificato dopo aver fatto clic sul stesso controllo per la seconda volta; quindi in questo caso vorrei che il cursore agisse normalmente (non per mantenere il testo segnato).
Aggiornamento
Quando scatto una volta sul TextBox1
, mi aspetto di avere questo risultato:
Se cliccato di nuovo, il momento clou sarebbe rimosso e il cursore potrebbe essere collocato nel luogo in cui è stato cliccato.
Non sono riuscito a riprodurre il problema poiché il codice funzionava già per me, anche se utilizzato in modo programmatico! – R3uK
Hai già una proprietà per questo denominato "EnterFieldBehavior'. Devi solo impostarlo su 'fmEnterFieldBehaviorSelectAll'. Questo è il valore predefinito per questa proprietà, quindi non devi fare nulla se non hai cambiato il valore della proprietà. Dovrebbe funzionare senza alcun bit di codice. –
@ R3uK Non so perché, ma avere il codice sopra da solo non funziona per me - il testo non è selezionato al clic. Come [@vacip] (http://stackoverflow.com/users/4713729/vacip) ha detto, il motivo potrebbe essere che l'effettivo (nascosto) * click * si verifica dopo l'evento Enter e che annulla semplicemente la selezione. – ZygD