Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2006
    Messaggi
    18

    [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?

    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.
    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);
    }
    legenda:
    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;
    }
    all'inizio ho cercato di passare i valore (indexpublico) come parametri al metodo aggiorna, ma EventHandler non lo permette. come dovrei ovviare?

  2. #2
    Utente di HTML.it
    Registrato dal
    Mar 2006
    Messaggi
    18
    Raga, nessuno? Help!!

  3. #3
    codice:
            public Form1()
            {
                InitializeComponent();
    
                TextBox[] txtMatrix = new TextBox[3];
    
                int x = 20;
                int y = 20;
    
                for (int i = 0; i < txtMatrix.Length; i++)
                {
                    txtMatrix[i] = new TextBox();
                    txtMatrix[i].Leave += new EventHandler(textBox_Leave);
                    txtMatrix[i].Left = x;
                    txtMatrix[i].Top = y;
                    y += txtMatrix[i].Height + 20;
                }
    
                Controls.AddRange(txtMatrix);
            }
    
            void textBox_Leave(object sender, EventArgs e)
            {
                label1.Text = ((TextBox)sender).Text;
            }
    Vedi se può tornarti utile...
    Cerco ombrello vecchio, nuovo, moderno o antidiluviano; purché protegga da una pioggia che vien giù come Dio la manda. Fate presto che ho l’acqua alla gola. (Noè)

    C# programming and other stuffs

  4. #4
    Utente di HTML.it
    Registrato dal
    Mar 2006
    Messaggi
    18
    fantastico, più che utile.. va benissimo ti ringrazio tantissimo

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.