Ragazzi. qualcuno sa aiutarmi a scrivere il codice per gestire gli eventi di una matrice di textbox creati dinamicamente?
in pratica un applicazione windows form carica gli elementi di un db nelle textbox, quindi crea tante txtbox tante quanti sono i record. devo impostare l'evento Leave su ogni text box creata. sono riuscito a impostare l'evento ma si attiva solo sull'ultima txtbox creata perchè l'indice della matrice rimane all'ultima posizione dopo la creazione e il metodo dell'evento considera il suddetto indice. qualche consiglio?
Un pò di codice.
Questo è il metodo che crea la matrice e poi ogni singola txtbox, richiama anche il gestore dell'evento Leave, il metodo aggiorna. La variabile indexpublico è dichiarata prima del costruttore ed è visibile da qualsiasi metodo all'interno della classe. In pratica questa variabile dovrebbe passare l'indice di ogni singolo txtbox al metodo aggiorna, invece di avviare tanti gestori quanti sono le textbox, avvia solo 1 gestore evnto perchè aggiorna terrà conto solo dell'ultima valore della variabile indexpublico.
legenda:codice:void crea_box(int x, int y, int n, int indice, string valuebox) { TextBox[] txtMatricebox = new TextBox [n]; txtMatricebox[indice] = new TextBox(); txtMatricebox[indice].Location= new Point(x, y); Controls.Add(txtMatricebox[indice]); txtMatricebox[indice].Text=valuebox; indexpublico=indice; txtMatricebox[indice].Leave+=new EventHandler(aggiorna); }
x, y= coordinate txtbox
n= dimensione arrray
indice= indice matrice
valuebox= testo della txtbox
qua viene richiamato il metodo per creare la matrice:
all'inizio ho cercato di passare i valore (indexpublico) come parametri al metodo aggiorna, ma EventHandler non lo permette. come dovrei ovviare?codice:int xx=70; int yy=50; for (int i = 0; i < num; i++) { mio_datareader.Read(); string valuetxt=mio_datar1.GetString(1); crea_box(xx, yy, num, i, valuetxt); yy+=50; }

Rispondi quotando
