Programmare Eventi per controlli costruiti a runtime

mercoledì 18 novembre 2009 - 09.51

ysdemarc Profilo | Expert

Ciao a tutti..

se io scrivo (per assurdo) nel caricamento nel form queste righe:

int top = 0; for (int i=0; i < 100; i++) { TextBox txt = new TextBox(); txt.Parent = this; txt.Top = top; txt.Height = 10; txt.Width = 200; txt.Left = 2; txt.Show(); top += txt.Height; }

ottengo dei controlli "fabbricati" a runtime..

ma se per ognuno di questi volessi programmare qualche evento del controllo (come il doppio click per intenderci) cosa dovrei fare?
come riesco a capire su qual'è il controllo che scatena l'evento?

-----------------
RISOLTO:
----------------
basta scrivere all'inteno del ciclo in questo caso

txt.DoubleClick += (il tool di chiede di premere TAB per farlo automaticamente) e avrai il risultato:

txt.DoubleClick += new EventHandler(txt_DoubleClick);

(qui il tool ti dirà: Premete TAB per generare il gestore 'txt_DoubleClick' nella classe

ed ecco il risultato.. sender sarà il tuo oggetto TextBox su cui è avvenuto il doppio click

void txt_DoubleClick(object sender, EventArgs e)
{
throw new NotImplementedException();
}

gigi82 Profilo | Newbie

Ciao,

basta che abbini ad ogni ogni controllo che crei il relativo evento, un esempio può essere il seguente:

private void Form1_Load(object sender, EventArgs e) { textBox1.DoubleClick += new EventHandler(textBox1_DoubleClick); } void textBox1_DoubleClick(object sender, EventArgs e) { MessageBox.Show("Test"); }

come puoi vedere, al controllo textbox1 è agganciato l'evento doubleclick.
Una volta che hai scelto l'evento scrivi += e dopo premi due volte il tab, in questo modo creerai automaticamente il delegate.
Spero di essere stato esauriente, se hai altri problemi non esitare,

Luigi

ysdemarc Profilo | Expert

ciao..avevo già risolto..abbiamo scritto la soluzione in contemporanea....

grazie
Vincenzo
Programmatore sbilenco
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