Controllo su Button

giovedì 12 agosto 2004 - 12.04

secks Profilo | Senior Member


Ho una WebForm con delle textBox e un button di uscita. Accade che digitando una textBox ed invio alla fine attiva il button di uscita. Come posso fare in modo che i button vengano eseguiti solo cliccandoci sopra?

Grazie e Ciao.
Paolo.

secks Profilo | Senior Member

Ho fatto una ricerca in rete piu' approfondita sul problema: in alcuni casi quando nella WebForm ci sono + di un Button all'invio su una TextBox accade che venga eseguito uno dei Button, contro le intenzioni del povero programmatore. Una soluzione puo' essere quella di far decidere al programma quale Button far eseguire, magari su uno che non fa nulla. Altra soluzione è quella di controllare l'evento sulle TextBox sul Invio ( chr 13 ). Solo che non sono riuscito a comprendere gli esempi sui sorgenti trovati, quasi tutti in CSharp/ASP.NET ed in Inglese, cosa che in questo periodo mi è difficile affrontare sia per il poco tempo che per la mia ancora scarsa conoscenza del linguaggio. Comunque mi sembra strano che cliccando su un controllo si debba fare un'infinità di controlli sull'evento di altri controlli. Mi sembra strano anche che questo problema il sottoscritto siano uno dei pochi ... ad averlo. Mi sembra normale dare un invio su una TextBox, puo' essere dato anche accidentalmente e creare dei casini, o sbaglio?
Grazie se qualcuno mi dà un po' di supporto.
Ciao a tutti.
Paolo.

giangi_77 Profilo | Newbie

ho anche io lo stesso tuo problema avendo in genere 3/4 pulsanti nella pagina.
al momento quando ho potuto ho sostituito il button con un linkbutton a cui ho dato lo
stile identico a quello dei button.
se scoprirò un altro metodo ti farò sapere.
ciao

secks Profilo | Senior Member

Ho trovato il seguente codice:

Sub SetButton(ByVal txt As TextBox, ByVal btn As Button)
Dim formName As String
Dim c As Control = btn.Parent
While (Not (TypeOf c Is System.Web.UI.HtmlControls.HtmlForm))
c = c.Parent
End While

If TypeOf c Is System.Web.UI.HtmlControls.HtmlForm Then
formName = c.ClientID
Else
formName = "forms[0]"
End If

Dim jsString As String
jsString = "if ((event.which && event.which == 13) || (event.keyCode && event.keyCode == 13)) {document." + formName + ".elements['" + btn.UniqueID + "'].click();return false;} else return true; "
txt.Attributes.Add("onkeydown", jsString)
End Sub

Da attivare per ogni TextBox sul Load della pagina:

clsFuncs.SetButton(txtArt, Button1)

Ho provato a fare una funzione che intecetti tutte le textBox della form per lanciare la suddetta funzione ma non ci sono riuscito, qualcuno sa come fare?

Ciao e grazie.
Paolo.

secks Profilo | Senior Member

Dimenticavo, il lunedì!.
Per far funzionare SetButton è necessario inserire un button ( Button1 ) che non faccia nulla.
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-2023
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5