Cambio di text box alla pressione di enter

martedì 26 settembre 2006 - 11.14

bluland Profilo | Guru

salve,

vorrei scorrere i textbox oltre che con il tasto tab anche alla pressione di ENter,
ho provato cosi:

Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

ma nn funziona, idee?

saluti

VP

blood Profilo | Senior Member

>salve,
>
>vorrei scorrere i textbox oltre che con il tasto tab anche alla
>pressione di ENter,
>ho provato cosi:
>
>Private Sub TextStartUser_TextChanged(ByVal sender As System.Object,
>ByVal e As System.EventArgs) Handles TextStartUser.TextChanged
> If Me.TextStartUser.Text = Chr(13) Then
> Me.Textidkit.Focus()
>
> End If
> End Sub
>
>ma nn funziona, idee?
>
>saluti
>
>VP

devi intercettare l'evento Keypress del tuo Form, in quanto quello che tu hai messo avviene solo al validate della textbox e quindi quando tu esci fuori dal tuo controllo.
Nell'evento Keypress hai e.KeyChar che rappresenta il tasto premuto, dopodiche controlli se è un carattere di invio (Chr(13)) e se è giusto fai un send di un tabulatore, oppure semplicemente selezioni il prossimo controllo in ordine di tab vedi un po tu

---------------
Piscopo Paolo

:: wD @ IRCnet :: .NET wannabe 8-)

Brainkiller Profilo | Guru

>vorrei scorrere i textbox oltre che con il tasto tab anche alla
>pressione di ENter,
>ho provato cosi:
>ma nn funziona, idee?

Gestisci l'evento OnKeyPress e all'interno metti questo codice:

e.Handled = True If (e.KeyChar = Chr(13)) Then TextBox2.Focus() End If

Vedrai che funziona.
Ciao

David De Giacomi | Microsoft MVP
http://blogs.dotnethell.it/david/

bluland Profilo | Guru

si grazie funziona cosi,ma se ho n textbox e voglio che ad ogni enter passi al prossimo??


saluti


EDIT:

HO notato anche che si va al prossimo textbox2 con enter ma non mi scrive nel textbox1!!

ho capito devo mettere e.handled dopo:

If (e.KeyChar = Chr(13)) Then
e.Handled = True
Me.Textidkit.Focus()
End If

blood Profilo | Senior Member

>si grazie funziona cosi,ma se ho n textbox e voglio che ad ogni
>enter passi al prossimo??
>
>
>saluti

come ti ho detto, puoi fare un SendKeys() e mandare un tabulatore, oppure usi la SelectNextControl() , oppure ti cicli a mano i controlli di un tuo contenitore....ecc

eccoti un esempio per n textbox

Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

nb. basta che ci aggiungi che gestisce piu eventi quella funzione con la clausola Handles ..

---------------
Piscopo Paolo

:: wD @ IRCnet :: .NET wannabe 8-)

bluland Profilo | Guru

grazie e' da poco che sono passato a studiare le windows apply con web e' un po' diverso.

sul mio form ho anche un butto di inserimento dati, se dopo l'ultimo text box volessi che l'enter mi richiama il button?

o meglio, dopo l'ultimo enter il controllo e' passato a button, ma devo cmq dgtarlo per scatenare l'evento, se volessi proprio dgt il button con l'ultimo enter?


saluti

blood Profilo | Senior Member

>grazie e' da poco che sono passato a studiare le windows apply
>con web e' un po' diverso.
>
>sul mio form ho anche un butto di inserimento dati, se dopo l'ultimo
>text box volessi che l'enter mi richiama il button?
>
>o meglio, dopo l'ultimo enter il controllo e' passato a button,
>ma devo cmq dgtarlo per scatenare l'evento, se volessi proprio
>dgt il button con l'ultimo enter?
>
>
>saluti

Io nella funzione per farla piu flessibile possibile ho messo che seleziona il prossimo controllo rispetto a quello chiamante quindi se lo metti che gestisce anche altri eventi di altri controlli li devi mettere dopo Handles...altrimenti finito le textbox aggiunte passa il focus al bottone e con invio te lo preme

ah ma in pratica tu vorresti saltare che il bottone prendesse il focus e dare direttamente il click del bottone?? (invece di fare due volte invio in pratica), se cosi fosse potresti intercettare l'evento Validated dell'ultima tua TextBox oppure se non sai il numero delle textbox potresti controllare se il prossimo contrllo è un bottone in ordine di TAB allora vuoldire che sei arrivato all'ultima Textbox...e richiami la sua Button.Click() passandoci come argomenti Nothing (piccolo bypass della normale procedura)
---------------
Piscopo Paolo

:: wD @ IRCnet :: .NET wannabe 8-)

bluland Profilo | Guru

si potrei fare cosi:

If (e.KeyChar = Chr(13)) Then Me.SelectNextControl(sender, True, True, False, True) If Me.Textultima.Text <> "" Then butIns_Click(Nothing, Nothing) End If End If

o c'e modo migliore?

blood Profilo | Senior Member

mmmm beh sicuramente il modo migliore sarebbe farti un For each control in panel ad es. ti scorri tutti i tuoi controlli di un contenitore, cosi puoi sapere quando arrivi alla fine dei tuoi controlli e chiamarti direttamente il botton...perchè a quanto vedo la SelectNextControl() non ti torna il prossimo controllo che andrà selezionato come pensavo, ma bensì un boolean che notifica se è stato possibile selezionare il controllo o meno
---------------
Piscopo Paolo

:: wD @ IRCnet :: .NET wannabe 8-)

bluland Profilo | Guru

si infatti in questo caso conosco l'ultimo textbox!!
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2025
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5