Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2010
    Messaggi
    250

    [C#] Passaggio dati tra form

    Ciao ragazzi...premetto che sono un neofita con la programmazione orientata agli oggetti e spero mi possiate dare una mano.

    In pratica io ho una classe contenente due liste di stringhe;voglio fare in modo che queste due liste siano modificate da un altra form.Ho letto su internet come io possa passare gli oggetti all'altra form tramite delegate (non so neanche se sia il modo più corretto,giusto e semplice) solo che se io volessi trasferire nuovamente gli oggetti modificati dall'altra form alla form principale come potrei fare?

    Non so se mi sono spiegato bene ma veniamo al codice

    Form1.cs
    codice:
    public
    partialclassForm1 : Form
    
        {
    
            
    List<string> stringa1_l = newList<string>();
    
            
    List<string> stringa2_l = newList<string>();
    
    
            
    public Form1()
    
            {
    
                InitializeComponent();
    
                
    for (int i = 0; i < 10; i++)//Per prova aggiungo alcuni valori alle stringhe
    
                {
    
                    stringa1_l.Add(
    "stringa1" + i);
    
                    stringa2_l.Add(
    "Stringa2" + i);
    
                }
    
            }
    
            
    
            
    publicdelegatevoidPassData(List<string> lista1, List<string> lista2);
    
            
    
            
    
            
    privatevoid button3_Click(object sender, EventArgs e)
    
            {
    
                
    Ricevente form2 = newRicevente();
    
                
    PassData del = newPassData(form2.fundata);
    
                del(
    this.stringa1_l, this.stringa2_l);
    
                form2.Show();
    
            }
    
        }
    
                
            
         
     
     
     
     
     
     
    

  2. #2
    Utente di HTML.it
    Registrato dal
    Jun 2010
    Messaggi
    250
    Ricevente.cs
    codice:
    
    
    
     public
      
    partialclassRicevente : Form
    
     
    
    
         {
    
      
             
    List<string> _l1 = newList<string>();
     
    
    
      
             
      
    List<string> _l2 = newList<string>();
      
    
    
      
            
      
    public Ricevente()
      
    
    
      
             {
    
      
                 InitializeComponent();
    
      
                 
    
      
             }
    
    
      
             
    publicvoid fundata(List<string> l1, List<string> l2)
      
    
    
     
             {
    
      
                 
    this._l1 = l1;
      
    
    
      
                 
      
    this._l2 = l2;
      
    
    
      
                 Elabora();
    
    
      
             }
    
      
             
    publicvoid Elabora()
      
    
    
      
            {
    
      
                 
    foreach (string s in _l1)
      
    
    
      
                     stringhe1Cb.Items.Add(s);
    
    
      
                 
    foreach (string q in _l2)
      
    
    
      
                     Stringhe2.Items.Add(q);
    
    
      
                 _l1.Add(
    "Sono stata modificata ");
      
    
    
      
                 _l2.Add(
      
    "Anchio");
      
    
    
    
      
             }
    
    
      
             
    
            }
    
    
      
         }
     
    
    Come potete vedere sono riuscito in qualche modo a passare le liste dalla form principale all'altra...qui le visualizzo in una combobox in modo corretto e poi le modifico...io vorrei che queste modifiche si apportino anche agli oggetti presenti nella form principale.

    Scusate se queste domande che faccio non hanno senso ma sono autodidatta

  3. #3
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Semplicemente utilizza il costruttore di Ricevente per passare i riferimenti.

    In Form1 scriverai

    codice:
    Ricevente form2 = new Ricevente(stringa1_l, stringa2_l);
    form2.Show();
    e in Ricevente

    codice:
            List<string> l1;
            List<string> l2;
    
    
            public Ricevente(List<string> pl1, List<string> pl2)
            {
                l1 = pl1;
                l2 = pl2;
                InitializeComponent();
    
    
                Elabora();  // Questa la puoi chiamare dove vuoi
            }
    
    
            public void Elabora()
            {
                 l1.Add("Sono stata modificata ");
                 l2.Add("Anche io");
            }
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  4. #4
    Utente di HTML.it
    Registrato dal
    Jun 2010
    Messaggi
    250
    Quote Originariamente inviata da oregon Visualizza il messaggio
    Semplicemente utilizza il costruttore di Ricevente per passare i riferimenti.

    In Form1 scriverai

    codice:
    Ricevente form2 = new Ricevente(stringa1_l, stringa2_l);
    form2.Show();
    e in Ricevente

    codice:
            List<string> l1;
            List<string> l2;
    
    
            public Ricevente(List<string> pl1, List<string> pl2)
            {
                l1 = pl1;
                l2 = pl2;
                InitializeComponent();
    
    
                Elabora();  // Questa la puoi chiamare dove vuoi
            }
    
    
            public void Elabora()
            {
                 l1.Add("Sono stata modificata ");
                 l2.Add("Anche io");
            }
    Ah grazie...era proprio quello che chiedevo.

    Se per esempio volessi modificare altri oggetti mi basterebbe aggiungerli al costruttore vero?

    E se volessi modificare degli oggetti appartenenti alla form principale tramite gli oggetti modificati dal form ricevente?

    Un ultima domanda:l'oggetto modificato nella form ricevente viene modificato anche nella form principale a causa del passaggio dell'oggetto per indirizzo?Inizialmente credevo che non venisse modificato . .
    Ultima modifica di Marco1995; 27-12-2013 a 17:15

  5. #5
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Quote Originariamente inviata da Marco1995 Visualizza il messaggio
    E se volessi modificare degli oggetti appartenenti alla form principale tramite gli oggetti modificati dal form ricevente?
    Eh?

    Un ultima domanda:l'oggetto modificato nella form ricevente viene modificato anche nella form principale a causa del passaggio dell'oggetto per indirizzo?
    Non sono oggetti diversi ... è lo stesso oggetto... e allora che ti ho detto ?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  6. #6
    Utente di HTML.it
    Registrato dal
    Jun 2010
    Messaggi
    250
    Quote Originariamente inviata da oregon Visualizza il messaggio
    Eh?
    Scusa mi sono espresso da cani xD...sono riuscito a capire come "passare" gli oggetti da un form all'altro.

    Ma se volessi modificare una combobox appartenente alla form principale dalla form ricevente come dovrei fare?

  7. #7
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Passa il riferimento alla combo ...

    Ma se devi modificare tutto quello che c'è da una parte nell'altra allora qualcosa comincia a non andare nel progetto ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  8. #8
    Utente di HTML.it
    Registrato dal
    Jun 2010
    Messaggi
    250
    Quote Originariamente inviata da oregon Visualizza il messaggio
    Passa il riferimento alla combo ...

    Ma se devi modificare tutto quello che c'è da una parte nell'altra allora qualcosa comincia a non andare nel progetto ...
    Ma non ci sono dei metodi un po' più eleganti invece di passare il riferimento ad ogni oggetto?

    Può essere che ci sia qualche errore in progettazione ma io avevo pensato ad una finestra opzioni che aveva la funzione proprio di modificare alcuni oggetti nella form principale...

  9. #9
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Non è mica "poco elegante" passare riferimenti ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  10. #10
    Utente di HTML.it
    Registrato dal
    Jun 2010
    Messaggi
    250
    Quote Originariamente inviata da oregon Visualizza il messaggio
    Non è mica "poco elegante" passare riferimenti ...
    Però se ce ne sono troppi potrebbe diventare lungo

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.