[英]Binding Listbox to List<object> in WinForms
將列表框綁定到 Windows 窗體中的對象列表的最簡單方法是什么?
您正在尋找DataSource property
:
List<SomeType> someList = ...;
myListBox.DataSource = someList;
您還應該將DisplayMember
屬性設置為您希望列表框顯示的對象中的屬性名稱。 如果不這樣做,它將調用ToString()
。
將System.Windows.Forms.Listbox控件綁定到對象列表(此處為動態類型)
List<dynamic> dynList = new List<dynamic>() {
new {Id = 1, Name = "Elevator", Company="Vertical Pop" },
new {Id = 2, Name = "Stairs", Company="Fitness" }
};
listBox.DataSource = dynList;
listBox.DisplayMember = "Name";
listBox.ValueMember = "Id";
假設您正在顯示具有“customerName”和“customerId”屬性的客戶對象列表:
listBox.DataSource = customerListObject;
listBox.DataTextField = "customerName";
listBox.DataValueField = "customerId";
listBox.DataBind();
編輯:我知道這在 asp.net 中有效 - 如果你正在做一個 winforms 應用程序,它應該非常相似(我希望......)
當然,這不會為您提供任何真正有意義的東西,除非對象正確覆蓋了ToString()
(或者您沒有真正使用通用對象列表並且可以綁定到特定字段):
List<object> objList = new List<object>();
// Fill the list
someListBox.DataSource = objList;
ListBox1.DataSource = CreateDataSource();
ListBox1.DataTextField = "FieldProperty";
ListBox1.DataValueField = "ValueProperty";
請參考本文章詳細的例子。
我還沒有在這里看到它,所以我發布了它,因為對我來說是 winforms 中的最佳方式:
List<object> objList = new List<object>();
listBox.DataSource = objList ;
listBox.Refresh();
listBox.Update();
這里有兩條主要路線:
1: listBox1.DataSource = yourList;
對 yourList 和 Rebind 進行任何操作(添加/刪除)。
設置 DisplayMember 和 ValueMember 來控制顯示的內容。
2: listBox1.Items.AddRange(yourList.ToArray());
(或使用 for 循環來執行Items.Add(...)
)
您可以通過重載列表對象的 ToString() 或通過實現 listBox1.Format 事件來控制 Display。
對於 UWP 應用:
XAML
<ListBox x:Name="List" DisplayMemberPath="Source" ItemsSource="{x:Bind Results}"/>
C#
public ObservableCollection<Type> Results
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.