2010-11-25 5 views
1

Ich möchte eine Eigenschaft eines Objekts verwenden, das sich in einem Objekt befindet. Gibt es einen Weg, dies zu erreichen?Verwenden Sie eine Objekteigenschaft als das DisplayMember in ListBox

WebProxy proxy = new WebProxy("127.0.0.1:80"); 
ListBox listBox = new ListBox(); 
listBox.DisplayMember = **"Address.Authority"**; //Note: Address.Authority is an property inside the WebProxy object 
listBox.Items.Add(proxy); 

Danke.

Antwort

1

Werfen Sie einen Blick auf this question, es ist im Wesentlichen die gleiche Frage - das Prinzip ändert sich nicht zwischen DataGridView und ListBox. Kurze Antwort: Es ist möglich, aber verschachtelt.

+0

ich den sabe Ansatz dieses OP und erstellt ein neues Objekt, das mein WebProxy-Objekt und ein Str enthielt Das gibt mir die Autorität des Stellvertreters. Danke für deine Antwort. –

0

Wie über Sie WebProxy auf, zum Beispiel einer Unterklasse, WebProxyEx und implementieren die IList Schnittstelle, die Art (ein Objekt erwartet, dass der IList oder IListSource Schnittstellen implementiert) ist eine Voraussetzung, die .DataSource Eigenschaft von listbox zu verwenden. Wie folgt vor:

class WebProxyEx : WebProxy, IList 
    { 
     private object[] _contents = new object[8]; 
     private int _count; 

     public WebProxy w; 

     public WebProxyEx(string address) 
     { 
      _count = 0; 
      w = new WebProxy(address); 
      this.Add(w.Address.Authority); 
     } 
... 

Und verwenden Sie es mögen:

ListBox lb; 
public Form1() 
{ 
    InitializeComponent(); 
    WebProxyEx w = new WebProxyEx("127.0.0.1:80");//Use your sub class 
    lb = new ListBox(); 
    this.Controls.Add(lb); 

    lb.DataSource = w;//assign the datasource. 
    //lb.DisplayMember = "Address.Authority"; //Automatically gets added in the WebProxEx constructor. 

} 

gibt folgende Ausgabe im Listenfeld:

127.0.0.1

+0

Danke für Ihre Antwort. Ich weiß nicht, ob es notwendig ist, IList zu implementieren, da ich bereits eine Liste als meine Datenquelle habe. –

+0

Siehe [MSDN] (http://msdn.microsoft.com/en-us/library/system.windows.forms.listcontrol.datasource%28VS.71%29.aspx) für die Eigenschaft ".DataSource"; *> Ein Objekt, das die IList-Schnittstelle implementiert, z. B. ein DataSet oder ein Array * –