|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Member
Iscritto dal: Aug 2006
Messaggi: 146
|
[C#] Gestione eventi per una matrice di textbox dinamica
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? |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Sep 2004
Messaggi: 3967
|
Suppongo che tu abbia messo il tutto in un 'for' oppure in un foreach, per es.:
Codice:
foreach(TextBox txt in tuo_controllo) { //codice relativo alla procedura di uscita }
__________________
Dai wafer di silicio nasce: LoHacker... il primo biscotto Geek ![]() |
![]() |
![]() |
![]() |
#3 |
Member
Iscritto dal: Aug 2006
Messaggi: 146
|
Ciao. esatto, un for che mi richiama il metodo che crea la matrice di txtbox e passa i dati, il numero totale, e le coordinate. nel metodo crea txtbox viene istanziato il gestore dell'evento che si attiva solo sull'ultima box creata per via dell'indice rimasto in memoria. come potrei ovviare?
|
![]() |
![]() |
![]() |
#4 | |
Senior Member
Iscritto dal: Sep 2004
Messaggi: 3967
|
Quote:
![]()
__________________
Dai wafer di silicio nasce: LoHacker... il primo biscotto Geek ![]() |
|
![]() |
![]() |
![]() |
#5 |
Member
Iscritto dal: Aug 2006
Messaggi: 146
|
Ciao. si ecco 2 frammenti 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. 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: 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; } |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 14:56.