Controlli dinamici

di il
7 risposte

Controlli dinamici

private void btnCodice_Click(object sender, EventArgs e)
        {
            for (int i = 0; i < 5; i++)
            {
                ProgressBar prova = new ProgressBar();
                prova.Name = "progress" + i;
                prova.Size = new Size(100, 10);
                x = 5;
                y = y +11;
                prova.Location = new Point(x, y);
                panel1.Controls.Add(prova);

            }
sto cercando ci capire come usare i controlli dinamici.
ma una volta creati come faccio a modificare le proprietà se ancora non esistono?
   private void button1_Click(object sender, EventArgs e)
        {
           prova.Value = 50;
        }
mi dice che non esiste nel contesto corrente.

ho scritto il codice giusto per farvi capire il problema perchè sto sperimentando con public, cambiando lo scope delle variabili e dei controlli. l'ho impostato come matrice. sto cercando in rete ma non sto capendo. Mi date qualche input o qualche link dove studiare?

grazie

7 Risposte

  • Re: Controlli dinamici

    F19 Mi sogno il codice la notte
     ProgressBar[] pb = new ProgressBar[5];
            int SOMMA=0;
            
            private void btnCodice_Click(object sender, EventArgs e)
            {
              for (int i = 0; i < 5; i++)
                {
                    pb[i] = new ProgressBar();//QUESTA RIGA ERA IL PROBLEMA.
                    pb[i].Name = "PROVA";
                    pb[i].Size = new Size(100, 10);
                    x = 5;
                    y = y + 11;
                    pb[i].Location = new Point(x, y);
                    panel1.Controls.Add(pb[i]);
                }
    
            }
    
            private void button1_Click(object sender, EventArgs e)
            {
            	SOMMA = Convert.ToInt32(textBox1.Text);
                	pb[Convert.ToInt32(textBox2.Text)].Value = SOMMA;
                
            }
            
  • Re: Controlli dinamici

      
      
         private void btnInizializzatxt_Click(object sender, EventArgs e)
            {
            	createTxt(1, 4);
            }
      
        public void createTxt(int inizio, int fine)
            { 
                int i = 0;//serve per dare un nome diverso
                for (int  x = inizio ; x <= fine; x++)
    	        {
    	                TextBox txt = addtxt(i);
            	        panel1.Controls.Add(txt);
                    	i++;
    		}
      	}
      
       TextBox addtxt(int i)
            {
                TextBox txt = new TextBox();
                txt.Name = "txt" + i.ToString();
                txt.Size=new Size(50, 25);
                txt.Location = new Point(5, 30 * i);
                return txt;
            }
    E' quasi un mese che sono bloccato su questo argomento.
    Ho capito come si creano i controlli dinamici.
    Quello che non capisco è come avere il controllo successivamente.
    Le ho provate tante.
    Ho creato un array di controlli.
    Ho creato tanti controlli.
    ho creato delle classi.
    Ma alla fine il risultato non cambia.
    non riesco poi a controllarli.

    se con un pulsante volessi agire su txt3.text come devo fare?

    Suggerimenti?
  • Re: Controlli dinamici

    Pivello ha scritto:


    E' quasi un mese che sono bloccato su questo argomento.
    Che progressi hai fatto con i suggerimenti che ti sono stati dati, qui e altrove?

    Pivello ha scritto:


    Ho capito come si creano i controlli dinamici.
    Un controllo non è altro che una classe, quindi basta un new per creare una istanza di un nuovo controllo, usando la classe corrispondente al controllo da creare.

    Pivello ha scritto:


    Quello che non capisco è come avere il controllo successivamente.
    Puoi creare una lista di controlli (List<Control>) in cui salvare (con il metodo Add) il riferimento al controllo appena creato, e successivamente fare un ciclo su tale lista per recuperare i riferimenti e agire sui diversi controlli inseriti, oppure usare direttamente la proprietà Controls del pannello nel quale hai inserito i controlli creati dinamicamente.

    Pivello ha scritto:


    Le ho provate tante.
    Ho creato un array di controlli.
    Ho creato tanti controlli.
    ho creato delle classi.
    Ma alla fine il risultato non cambia.
    Certo, andando a caso, a tentoni, è ben difficile beccare fortuitamente la soluzione giusta, e al problema successivo magari si è di nuovo bloccati.
    Bisogna fermarsi e ragionare un attimo.

    Pivello ha scritto:


    se con un pulsante volessi agire su txt3.text come devo fare?
    Fai un ciclo su tutti i controlli presenti in panel1.Controls, che contiene tutti i riferimenti ai controlli creati e inseriti per la visualizzazione nel pannello. Essendo che la lista può contenere controlli diversi, il tipo di ciascun elemento è Control, che è la classe base da cui derivano tutti i controlli. Quando avrai trovato il controllo che ha il nome che ti interessa, devi a TextBox (che è il tipo effettivo dell'oggetto) e accedere alle proprietà desiderate del controllo.

    Non conosci il significato di "cast"? Non ti è chiaro il concetto di "classe base"? Studia la OOP.

    Ciao!
  • Re: Controlli dinamici

    Alka vorrei scriverti molte più cose... però mi sono ripromesso di limitarmi. Ti dico solo GRAZIE.

    P.S. questo è l unico sito sul c# al quale sono iscritto... solo a voi do fastidio però per non darvene troppo cerco ovunque.

    Prima di studiare il c#, usando il vba avevo difficoltà a capire le sub e le funzioni e il passaggio di parametri. Mentre adesso grazie al c# sono quasi naturali. Forse per capire le classi e iniziare a ragionare OOP devo iniziare a studiare le reti neurali e la fisica quantistica
  • Re: Controlli dinamici

    Forum.html.it/forum/showthread/t-1099245.html

    ALKA lo vedi che ho ragione? SEI OVUNQUE
    ma stavolta c'è anche Oragon.

    Cmq non ci sto capendo più niente. secondo me ho bisogno di una pausa.
    faccio troppa confusione. finché leggo, modifico e faccio il puzzle con il codice di esempio o codici altrui me la cavo.

    Il problema è adesso che sento l'esigenza di scrivere qualcosa di mio.

    mi sono bloccato perché nel metodo statico non riesco a vedere i controlli che ho creato nel form

    sto cercando di imparare i delegate e i thread. ma come posso riuscirsi se ancora non ho padronanza con l'ABC.

    posso chiedervi un consiglio?

    https://www.hoepli.it/libro/c-4-e-net-4-guida-professionale/9788820345600.html

    è un mattone di 1400 pagine e passa. Lo comprai però mi arresi al primo capitolo. e mi pento. Perché se 10 anni fa avessi letto gli altri capitoli forse in 10 anni avrei imparato qualcosa.
    lo sto leggendo. Ma ogni pagina è una salita. Ogni pagina mi porta a cercare su internet il modo di capire quello che c'è scritto.
    Ma la domanda è... è la strada giusta? oppure essendo un libro di 10 anni fa è troppo vecchio? Sicuramente qualcosa di buono c'è. Ma devo continuare su questa strada?
  • Re: Controlli dinamici

  • Re: Controlli dinamici

    Alka ha scritto:


    Puoi creare una lista di controlli (List<Control>) in cui salvare (con il metodo Add) il riferimento al controllo appena creato, e successivamente fare un ciclo su tale lista per recuperare i riferimenti e agire sui diversi controlli inseriti, oppure usare direttamente la proprietà Controls del pannello nel quale hai inserito i controlli creati dinamicamente.
    Oggi questo tuo "consiglio" ha dato un frutto
Devi accedere o registrarti per scrivere nel forum
7 risposte