2011-06-16 7 views
2

Hi codeurs J'ai encore une autre question impliquant la liaison de données dans winforms. J'ai mis en place une application de test où j'ai une liste de liaison composée de structures appelées CustomerInfo. J'ai lié un contrôle de zone de liste à cette liste et filé un fil pour ajouter des éléments CustomerInfo à la liste de liaison.Winforms liaison des questions impliquant des structures

namespace dataBindingSample { 

public partial class Form1 : Form { 

    public BindingList<CustomerInfo> stringList = new BindingList<CustomerInfo>(); 
    public Thread testThread; 

    public Form1() { 

     InitializeComponent(); 

     stringList.AllowNew = true; 
     stringList.RaiseListChangedEvents = true; 
     listBox1.DataSource = stringList; 

     testThread = new Thread(new ThreadStart(hh_net_retask_request_func)); 
     testThread.Priority = ThreadPriority.Normal; 

    } 

    private void hh_net_retask_request_func() { 

     int counter = 1; 
     while (true) { 


      CustomerInfo cust = new CustomerInfo(); 
      cust.Name = "Customer "+ counter.ToString(); 

      this.Invoke((MethodInvoker)delegate { 

       stringList.Add(cust); 

      }); 

      counter++; 
      Thread.Sleep(1000); 

     } 

    } 

    private void Form1_Load(object sender, EventArgs e) { 
     testThread.Start(); 
    } 

} 

public struct CustomerInfo { 

    public string Name { 

     set { 

      name = value; 
     } 

     get { 
      return name; 
     } 

    } 

    private string name; 
    } 
} 

Ce que je vois dans la zone de liste est le nom de la struct dataBindingSample.CustomerInfo par opposition à la propriété de la struct. J'avais l'impression que la liaison non complexe prenait la première propriété disponible.

S'il vous plaît, éduquez-moi sur ce que je fais de mal.

Merci,

Répondre

5

Vous devez soit ajouter une substitution de ToString() à votre classe CustomerInfo qui renvoie ce que vous aimeriez displyed dans votre liste, ou de définir listBox1.DisplayMemer = "Name" avant de régler la DataSource.

+0

Incroyable. Merci beaucoup, j'ai accepté ceci comme réponse. Une dernière chose, avez-vous de bonnes suggestions de livres de liaison de données winform? J'en ai trouvé quelques unes en 2006 mais pas aussi récentes que je le souhaite. – DoubleDunk

+0

@DoubleDunk - pas de problème, heureux d'être utile. Je n'ai aucune recommandation sur les livres, j'ai peur - vous devriez pouvoir trouver quelques suggestions ici ou sur programmers.stackexchange.com. –

+0

Il n'y aura pas de livres passés alors, Wpf est le choix préféré pour les nouveaux développements. Cela devrait être correct cependant, la liaison de données WinForms n'a pas vraiment changé beaucoup, et je soupçonne qu'il ne va pas à bientôt. – Andy

Questions connexes