Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 19
  1. #1
    Utente di HTML.it
    Registrato dal
    Apr 2007
    Messaggi
    162

    Passare un valore al costruttore del form

    Salve, sto provando a passare una lista al costruttore di un form,e quindi creo un altro costruttore e gli inserisco la lista che gli passo da un altra form e fin qui tutto bene perchè gli passa tutti gli elementi della lista, poi io dovrei ciclare questa lista e assegnare i valori ad una listview e facendo il debug vedo che riempe questa listview però alla fine quando mi appare il form non è aggiornata con tutti gli elementi.

    Il codice è il seguente:
    codice:
     
    
     public Ricetta(List<EstoreGeneric.Ricette> lista)
            {
                InitializeComponent();
    
                listamateriali = lista;
    
    
    
                listamateriali = lista;
    
                
    
                listView1.Items.Clear();
    
    
    
    
                for (int i = 0; i < listamateriali.Count; i++)
                {
    
                    ListViewItem item1 = new ListViewItem(((EstoreGeneric.Ricette)listamateriali[i]).ID.ToString());
                    item1.SubItems.Add(((EstoreGeneric.Ricette)listamateriali[i]).Nome.ToString());
                    item1.SubItems.Add(((EstoreGeneric.Ricette)listamateriali[i]).Note.ToString());
    
                    listView1.Items.AddRange(new ListViewItem[] { item1 });
    
    
                }
    
    
               
            }
    Stavo pensando che forse sia quel InitializeComponent();


    Mi potete aiutare?

    Grazie.

  2. #2
    Utente di HTML.it
    Registrato dal
    Apr 2007
    Messaggi
    162
    Nessuno mi puo dare un consiglio utile per poter definire meglio questa problematica?

    Grazie ancora

  3. #3
    Utente di HTML.it L'avatar di Stoicenko
    Registrato dal
    Feb 2004
    Messaggi
    2,254

    ListViewItem item1 = new ListViewItem(((EstoreGeneric.Ricette)listamaterial i[i]).ID.ToString());
    item1.SubItems.Add(((EstoreGeneric.Ricette)listama teriali[i]).Nome.ToString());
    item1.SubItems.Add(((EstoreGeneric.Ricette)listama teriali[i]).Note.ToString());

    listView1.Items.AddRange(new ListViewItem[] { item1 });
    provato dopo il for a fare un refresh()?

    in debug sei sicuro che faccia tutti i cicli giusti?
    Gli oggetti item sono valorizzati in modo corretto?

  4. #4
    Utente di HTML.it
    Registrato dal
    Apr 2007
    Messaggi
    162
    Grazie per il tuo interessamento,oggigiorno è difficile trovare qualcuno che ti calcoli.

    Cmq, il debug funziona correttamente e li vede tutti i record, e anche inserendo ListView.Refresh(),non mi va, la cosa che volevo aggiungere è che si tratta di un form MDIChild.

    Li sto provando tutti,ma non mi funziona, avete qualche idea del perchè?

    Grazide

  5. #5
    Utente di HTML.it L'avatar di Stoicenko
    Registrato dal
    Feb 2004
    Messaggi
    2,254
    ho fatto una prova con un form mdi container e uno mdichildren.. sul children ho messo la tua listview e l'ho popolata con una lista di stringhe.. tutto funziona.. mi da da pensare che siano i tuoi oggetti magari a non restituire n ulla con le proprietà ID, Nome, Note..

  6. #6
    Utente di HTML.it
    Registrato dal
    Apr 2007
    Messaggi
    162
    Allora,scusa se ricapitoliamo un pò tutto quanto,io ho un form MDIChildren che cliccando su un pulsante apro un altro MdiChildren dove in quest'ultimo inserisco i dati(Nome,Note) faccio salva e inserisco tutto all'interno di una static list<Materiale>.
    nell'evento FormClosed dichiaro l'oggetto della form che andrò ad aggiornare con il nuovo oggetto inserito e nel costruttore inserisco la lis statica e nella form dove dovrà apparire il nuovo record inserisco il codice sopra mostrato.

    Qui in basso invece metto il codice che inserisco nell'evento FormClosed:

    codice:
    private void AddRicetta_FormClosed(object sender, FormClosedEventArgs e)
            {
              
               
                Ricetta ricetta = new Ricetta(listaricette);
                
                
    
                this.Hide();
                this.Dispose();
                
            }
    Oltretutto facendo il debug mi vedo nella form dove vado a inserire i record la lista con tutti i record completi.
    Grazie per il tuo aiuto.

  7. #7
    Utente di HTML.it
    Registrato dal
    Apr 2007
    Messaggi
    162
    Volevo aggiungere una cosa che mi sono reso conto adesso e cioè che tornando alla from che conterrà i record aggiornati quando vado a cliccare sul pulsante(che è un toolStrip1Button) elimina, mi appare il record che avevo inserito successivamente.

    Altro non so cosa pensare.

  8. #8
    Utente di HTML.it L'avatar di Stoicenko
    Registrato dal
    Feb 2004
    Messaggi
    2,254
    scusa ma tu crei un form nell'evento closed di un'altra form?
    e quando gli fai lo show()??

    lasciando correre il fatto che il tutto sia un po' arzigogolato,
    codice:
    Ricetta ricetta = new Ricetta(listaricette);
                
                
    
                this.Hide();
                this.Dispose();
    questo codice crea il form ricetta ma non lo fa apparire, ed in più distrugge il form che lo crea quindi cissà poi cosa può accadere a ricetta e alla lista..

  9. #9
    Utente di HTML.it
    Registrato dal
    Apr 2007
    Messaggi
    162
    Non ti capisco! mi fai capire tu come faresti?Io non creo nessuna form sull'evento formClosed,la form esiste già.Gli passo solamente il parametro nel costruttore.

  10. #10
    Se la form "Ricetta" gia l'hai creata, non devi ricrearla facendo Ricetta x = new Ricetta(lista), ma ti conviene creare una funzione pubblica nell'oggetto "Ricetta" che accetta come parametro la tua lista.
    In questa funzione popoli la listview nella form Ricetta.



    P:S
    X Stoicenko. E' vero che la lista la crea nella form di cui fa il dispose, ma prima di uscire viene passato il riferimento ad un oggetto ancora attivo. Il garbage non dovrebbe quindi cancellare la lista

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.