Focus su controllo Web Form

martedì 20 luglio 2004 - 17.39

secks Profilo | Senior Member

Come posso eseguire il focus su un controllo su una Web Form, ad esempio posizionare il cursore del mouse su una TextBox da programma?
Ciao, Paolo.

Brainkiller Profilo | Guru

Ciao,
che io sappia non è implementata nativamente in .NET questa funzionalità e quindi bisogna andare di interopereabilità creando un Wrapper della Win32API SetCursorPos() qui documentata. Dovrebbe essere abb. facile:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winui/WinUI/WindowsUserInterface/Resources/Cursors/CursorReference/CursorFunctions/SetCursorPos.asp

saluti
david

secks Profilo | Senior Member

SetCursorPos richiede come parametri la posizione di dove posizionare il cursore mediante le coordinate X e Y. La TextBox di una WebForm non mi sembra che mi ritorni la posizione.
Ciao e grazie, Paolo.

freeteo Profilo | Guru

ciao
forse potresti usare javascript in cima alla pagina, tipo:

<script>
document.mioform.miatextbox.focus();
</script>

potresti farla in .net ma scriverla fissa nella parte html....

sts (spero ti serva)
ciao

Brainkiller Profilo | Guru

Ciao teo,
forse stiamo parlando di Windows Forms.

Per rispondere a secks, il discorso si complica. Allora la SetCursorPost ti sposta il puntatore del mouse ora devi avere le coordinate dove spostarlo ed è un altro paio di maniche.

C'è un'altra API la GetWindowRect o GetClientRect che ti restituisce lo spigolo in alto a sinistra e quello in basso a destra. Praticamente così hai le coordinate e le dimensioni di qualsiasi finestra (ricorda che anche una TextBox viene considerata una finestra)

Poi puoi usare la API ScreenToClient per rimappare le coordinate.

ciao
david

freeteo Profilo | Guru

ehmmm chiedo scusa oggi mi sa che sono 1po fuso...
ciao

secks Profilo | Senior Member

Ho fatto qualche prova secondo le vostre indicazioni che sono molto interessanti, sopratutto per me cha da un ambiente di sviluppo windows sto cercando di capire qualcosa del mondo web, sempre con VB. Cercando in internet ho trovato questa soluzione che mi sembra semplice e funzionante:

Private Sub SetFocus(ByVal ctrl As System.web.ui.Control)

Dim s As String = "<SCRIPT language='javascript'>document.getElementById('" & ctrl.ID & "').focus()</SCRIPT>"

RegisterStartupScript("focus", s)

End Sub

... poi per attivare il cursore del mouse sulla mia TextBox sul load della pagina:

Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

'Inserire qui il codice utente necessario per inizializzare la pagina

SetFocus(TextBox1)

End Sub

La SetFocus funziona. Per quel che ho capito non è possibile effettuare il focus del controllo a livello di VB, ma a livello di ASP/HTML il focus viene gestito ... ?

Ciao e grazie.
Paolo

Brainkiller Profilo | Guru

>La SetFocus funziona. Per quel che ho capito non è possibile effettuare il focus del controllo a livello di VB, ma a livello di ASP/HTML il focus viene gestito ...

Esatto. In un'applicazione Windows ci sono funzioni tipo SetFocus o Focus che spostano subito il focus sul controllo.
Lavorando in modalità diversa l'HTTP non puoi fare le stesse cose quindi devi andare a gestirle via Javascript che ha anch'esso funzioni per portare il focus su alcuni oggetti nella Form (WebForm).

ciao
david
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-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5