ciao ragazzi,
ho bisogno di una mano...
ho un form chiamato form3 in cui ho delle listview. Un altra classe AscoltoAggiunte riceve le modifiche da fare alle listview e deve effettuare gli aggiornamenti delle listview stesse che sono nel form3.
Essendo in due classi diverse devo utilizzare i delegati per modificare le liste del form3 dall'AscoltoAggiunte?
Io li ho usati, ma non sempre mi funzionano perchè? A volte aggiungono tranquillamente la voce alla lista altre volte mi da errore.. altre volte nn fa niente. Ho pensato di aver sbagliato il server che ascolta....
Vi posto il codice:
codice:public class AscoltoAggiunte { Form3P modifica; public AscoltoAggiunte(Form3P mod) { modifica = mod; } public void avvia() { try { TcpListener TcpList = new TcpListener(8083); Byte[] bytes = new Byte[256]; String str = null; TcpList.Start(); while (true) { TcpClient cl = TcpList.AcceptTcpClient(); NetworkStream mess = cl.GetStream(); int i; while((i=mess.Read(bytes, 0, bytes.Length))!= 0) { // Converto bytes in stringa str = System.Text.Encoding.ASCII.GetString(bytes, 0, i); } .... elabora la stringa ricevuta .... try{ modifica.Invoke(modifica.myDelegate, new Object[] { codice.ToString(), descrizione, categoria }); return; }catch(Exception ex){ Console.WriteLine("eccezione invoke: {0}", ex.ToString());} cl.Close(); }//chiuso while //chiuso try //chiuso avviaGraziecodice:public partial class Form3P : Form { ..... public delegate void AddListItem(String codice, String descrizione, String categoria); public AddListItem myDelegate; public Form3P(String nFile,String indirizzoS) { InitializeComponent(); myDelegate = new AddListItem(AddListItemMethod); // creo le liste } //faccio partire ascolto aggiunte public void AddListItemMethod(String codice,String descrizione, String categoria) { //creo voce per la lista ListViewItem f = new ListViewItem(codice.ToString()); f.SubItems.Add(descrizione); f.SubItems.Add("0"); //aggiungo nella lista corretta if (categoria.Equals("EXTRA")) { listaExtra.Items.Add(f); } else if (categoria.Equals("PRIMI")) { listaPrimi.Items.Add(f); } ecc.. } }

Rispondi quotando