+ Rispondi al Thread
Pagina 1 di 3 123 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 22

Discussione: Popolare una listview in un form dall'esterno

  1. #1
    SebastianoFloridia non è in linea Scolaretto
    Post
    70

    Popolare una listview in un form dall'esterno

    Salve a tutti:

    Ho un form con dentro una listview.
    lo apro così:

    FrmGeneraTravature frm = new FrmGeneraTravature();
    frm.Show();


    in modalità sempre in primo piano.

    Interagendo in un ambiente grafico posto in un form principale vorrei popolare la listview da codice posto in altro form.
    Come è possibile fare ciò?

    Saluti
    Sebastiano Floridia

  2. #2
    Sgrubak non è in linea Scolaretto
    Luogo
    Torrazza Piemonte
    Post
    169
    Ciao Sebastiano,
    se esponi una proprietà o un metodo pubblico della FrmGeneraTravature? La richiami da dove vuoi a patto che tu abbia istanziato l'oggetto.

  3. #3
    SebastianoFloridia non è in linea Scolaretto
    Post
    70
    Ciao, ho provato nei vari modi.
    se la istanzio globalmente posso valorizzare la proprietà stinga, ma non mi è chiaro come scatenare l'evento dentro il form che è già attivo.

    questo codice, come faccio ad eseguarlo dentro il form già attivo?

    LstTravature.Items.Add("proprietà stringa esposta");
    come fa il form a capire che la proprietà è cambiata?

    Ipotesi 2:
    FrmGeneraTravature frm = new FrmGeneraTravature();
    frm.Show();

    se genero così il codice invece dall'altro form non vedo la proprietà esposta.

    Cosa ne pensi?

  4. #4
    SebastianoFloridia non è in linea Scolaretto
    Post
    70
    Se non immaginassi che esiste un metodo più raffinato, ci metterei un bel timer dentro il form che legga la variabile e verifichi se è cambiato il valore!!
    Ciao
    Sebastiano Floridia

  5. #5
    Sgrubak non è in linea Scolaretto
    Luogo
    Torrazza Piemonte
    Post
    169
    Creare variabili globali non è una scelta efficace. Rischi di pasticciarle in altre parti del codice e non accorgertene, per poi avere dati a caso quando ti servono.

    se la tua classe Form predispone una proprietà come ad esempio:

    codice:
    public class FrmGeneraTravature
    {
        public List<T> LstTravature
    
        //altro codice che definisce la Form
    }
    puoi fare:
    codice:
    FrmGeneraTravature frm = new FrmGeneraTravature();
    frm.LstTravature.Items.Add("...");
    Per collegare tra loro le Form e poter richiamare il codice della prima, in un pezzo di codice della seconda, nella seconda gestisci la proprietà Owner.

    Spero di essere stato comprensibile.

    Saluti!

  6. #6
    L'avatar di AntonioG
    AntonioG non è in linea Moderatore Globale Ultimo blog: Commodore 64 e Codemotion
    Luogo
    Roma
    Post
    15,876
    Blogs
    5
    Quote Originariamente inviato da Sgrubak Visualizza il messaggio
    ... Rischi di pasticciarle in altre parti del codice ...
    Stesso discorso per timer ed accrocchi vari stile vecchissima (e sbagliata) programmazione VB/BASIC prime versioni.

    Se si utilizza uno strumento OOP, si devono utilizzare metodologie OOP.
    Avvisi generali e importanti, a pena CHIUSURA thread e/o BAN
    Il crossposting è vietato.
    Le richieste di "pappa pronta" sono vietate.
    Utilizzate i tag CODE per il codice.
    Leggere il Regolamento per chiarimenti PRIMA di creare nuovi thread.
    Utilizzare sempre i PM per comunicare con i moderatori.
    Non mi contattate in PM per problemi di software, usate il forum

  7. #7
    Sgrubak non è in linea Scolaretto
    Luogo
    Torrazza Piemonte
    Post
    169
    Quote Originariamente inviato da AntonioG Visualizza il messaggio
    ...Se si utilizza uno strumento OOP, si devono utilizzare metodologie OOP...
    Magari implementando una classe che derivi da List e creando l'evento personalizzato ItemAdded e gestendolo nella form.

  8. #8
    SebastianoFloridia non è in linea Scolaretto
    Post
    70
    Grazie a tutti!!
    riepilogando, ci sono diversi problemi. (per me nuovo di c#).
    in vb6 mi basta mettere il nome del form e passavo tutto.

    1)
    la seconda riga è da scrivere su un altro form.
    frm.LstTravature.Items.Add("...");


    ma non ne vedo la visibilità.

    2) è esposta una proprietà stringa. ogni volta che la valorizzo (a form aperto, qualche evento dentro il form di arrivo deve utilizzare la variabile interna per inserirla in una listaview). questo evento da scatenare mi crea molti dubbi.


    Cosa ne pensate?

    Saluti
    Sebastiano Floridia

  9. #9
    Sgrubak non è in linea Scolaretto
    Luogo
    Torrazza Piemonte
    Post
    169
    Quote Originariamente inviato da SebastianoFloridia Visualizza il messaggio
    ...2) è esposta una proprietà stringa.
    È esposta dove?
    Quote Originariamente inviato da SebastianoFloridia Visualizza il messaggio
    ogni volta che la valorizzo (a form aperto, qualche evento dentro il form di arrivo deve utilizzare la variabile interna per inserirla in una listaview). questo evento da scatenare mi crea molti dubbi...
    Qui ti viene comodo un metodo (esposto dalla form principale e richiamabile dalla secondaria) per valorizzare la stringa che, oltre ad assegnare il valore alla variabile, gestisca anche la ListView.

    Forse conviene che posti un po' di codice (occhio al Tag CODE) per vedere come hai impostato tutto il discorso.

  10. #10
    SebastianoFloridia non è in linea Scolaretto
    Post
    70
    Eccomi!!!

    Come si vede dall'immagine allegata, c'è un ambiente grafico ed un form con una listview.
    Selezionando un elemento grafico, la chiave prelevata dalla selezione, devo popolare la listview.

    https://1drv.ms/u/s!AprjCGWA882NkOQZ0e7GfalwHAxPog

    Il codice di avvio del form ricevente le informazioni èq questo:


    public partial class FrmGeneraTravature : Form
    {
    public string chiavetrave = "";
    public bool bOk = false;

    public FrmGeneraTravature()
    {
    InitializeComponent();
    }


    IL form viene lanciato così:
    FrmGeneraTravature frmgentr = new FrmGeneraTravature();
    frmgentr.Show();
    frmgentr.chiavetrave = "chiave che viene dalla selezione"; ------------------> questo dovrebbe stare in altro form e modificare anche 15 - 20 volte . il suo contenuto che varia a secondo della selezione deve popolare la listview.


    Spero di essere chiaro.

    1) dall'altro form non vedo frmgentr;

    2) non è chiaro come gestire all'interno del form ricevente già visibile , l'arrivo in sequenza di tanti elementi stringa.


    Grazie!!!
    Saluti
    Sebastiano Floridia

+ Rispondi al Thread
Pagina 1 di 3 123 ultimoultimo

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi