2010-07-08 14 views
5

Come posso fare clic o caricare l'evento click() di un pulsante in codebehind?
Ho già provatoChiamata evento click di un pulsante serveride

 btn.Click(); 

ma questo dà un errore. Sto usando ASP.NET

+0

Quale tecnologia stai usando? WinForms? WPF? ASP.NET? –

+0

Potresti essere più specifico sull'errore? – Hinek

risposta

3

Vuoi chiamare tutti i gestori di eventi collegati al pulsante, o solo uno?

Se solo uno, chiamare il gestore:

btn.btn_Click(btn, new EventArgs()); 

Se tutti loro, attivare l'evento:

var tmpEvent = btn.Click; 
if (tmpEvent != null) 
     tmpEvent(btn, new EventArgs()); 
+1

btn.Click restituisce un errore: l'evento può apparire solo sul lato sinistro ... – code

+0

Button1.Button1_Click (Button1, new EventArgs()); dose non funziona puoi espandere il tuo codice ?? –

1

Modifica provare questo:

protected void Page_Init(object sender, EventArgs e) 
{ 
     Button1.Click += new EventHandler(Button1_Click); 
} 

void Button1_Click(object sender, EventArgs e) 
{ 
} 

nelle cs pagina

+0

sì ho già fatto questo ... ma ho bisogno di chiamare pulsante1_Click nel codice dietro ... senza fare clic sul pulsante! – code

5

Se non è necessario il contesto fornito dal mittente e dagli eventargs quindi puoi semplicemente rifattorizzare per creare un metodo (es. DoStuff()) e fare in modo che il gestore di eventi lo chiami. Quindi, quando si desidera chiamare la stessa funzionalità da altrove, è sufficiente chiamare DoStuff(). Dipende davvero se vuoi effettivamente simulare un clic o meno. Se vuoi simulare un clic, allora altri metodi sono migliori.

20

Suppongo che si abbia un pulsante denominato Button1 e che sia stato fatto doppio clic per creare un gestore eventi.

per simulare il pulsante di scatto nel codice, è sufficiente chiamata il gestore di eventi:

Button1_Click (object sender, EventArgs).

ad es. nella tua pagina Carica evento

protected void Page_Load(object sender, EventArgs e) 
{ 
    //This simulates the button click from within your code. 
    Button1_Click(Button1, EventArgs.Empty); 
} 

protected void Button1_Click(object sender, EventArgs e) 
{ 
    //Do some stuff in the button click event handler. 
} 
+0

Vale la pena sottolineare in questa risposta che gli argomenti dell'evento stanno utilizzando EventArgs.Empty che si oppone a "newing up up". Questo ti farà risparmiare alcune risorse ma è anche un motivo sottile per cui questa risposta è migliore :) –

+0

Qualunque codice sia in esecuzione in 'Button1_Click (..)' dovrebbe essere nel suo stesso metodo, 'Foo()'. E poi sia 'Page_Load (..)' che 'Button1_Click (..)' dovrebbero chiamare 'Foo();'. Quando sei tentato di invocare gestori di eventi, pensa direttamente se è effettivamente ciò che intendi o se vuoi semplicemente eseguire la stessa azione finale. – JMD

1

Basta chiamare i pulsanti fare clic su funzione. http://forums.asp.net/t/1178012.aspx

Invece di provare a chiamare l'evento, basta chiamare la funzione utilizzata dall'evento.

Example: btn.Click() calls btn_Click(object sender, EventArgs e)

so you should call the function btn_Click(btn,new EventArgs());

0
protected void Page_Load(object sender, EventArgs e) 
{ 
    functionName(); 
} 
protected void btn_Click(object sender, EventArgs e) 
{ 
    functionName(); 
} 

public void functionName() 
{ 

//function code goes here, and call this function where ever you want 

} 

provare questo .......

0
YourButton.RaiseEvent(new RoutedEventArgs(Button.ClickEvent)); 

questo funziona per me.

+1

penso che sia per WPF –

1

E 'passato tanto tempo fa, ma qui è la mia soluzione

È possibile utilizzare:

btn.PerformClick(); 
0

Prova questa:

YourButton_Click(sender, e); 
Problemi correlati