Như đã trình bày bởi the 1st answer, việc sử dụng các công trình DisplayMember
cho dù bạn đang sử dụng asp.net hoặc winfor Cô.
Và để nhận xét thêm một chút, nó cũng hoạt động nếu bạn đang sử dụng kiểu thời trang khá cũ Items.add
cách thêm các mục vào ListBox
.
Chỉ cần cho vui, đây là một bản demo đơn giản về những gì bạn cần (chỉ cần tạo một hình thức mới và thả vào nó một ListBox và một Label):
public partial class Form1 : Form
{
class Customer
{
public string FirstName { get; set; }
public string LastName { get; set; }
public override string ToString()
{
return string.Format("{0} {1}", LastName, FirstName);
}
}
public Form1() { InitializeComponent(); }
protected override void OnLoad(EventArgs e)
{
base.OnLoad(e);
listBox1.DisplayMember = "LastName";
listBox1.DataSource = GetCustomers();
//listBox1.Items.AddRange(GetCustomers().ToArray());
}
private IEnumerable<Customer> GetCustomers()
{
return new List<Customer>()
{
new Customer() { FirstName = "Gustav", LastName = "MAHLER" },
new Customer() { FirstName = "Johann Sebastian", LastName = "BACH" }
};
}
private void lb_SelectedIndexChanged(object sender, EventArgs e)
{
label1.Text = listBox1.SelectedItem.ToString();
}
}
Thưởng thức
PS: @2nd postTag
không có sẵn cho ListBox
: bởi vì nó chấp nhận một mảng là object
, không phải là vùng chứa mục cụ thể như ListView
... nhưng bạn không cần bất kỳ trường hợp nào trong trường hợp của mình. Tag
hữu ích khi bạn muốn mang theo dữ liệu bổ sung cùng với ví dụ cụ thể là TreeViewItem
hoặc ListViewItem
. Nhân tiện, Tag
được xác định ở cấp Control
và do đó tồn tại cho Button
, Label
, v.v ... nhưng đối với phần của tôi, tôi nghĩ rằng lưu trữ dữ liệu nghiệp vụ trong đó không thành công (chưa được nhập, giao diện người dùng ghép đôi. ..) ngoài các trường hợp ListView
và TreeView
mà trường hợp khá thuận tiện.
Khi sử dụng DisplayMember, bạn nên đặt ValueMember = "Value" và sau đó đọc SelectedValue –
@Henk: +1, tôi đồng ý, tôi chỉ muốn chỉ ra rằng bạn có thể truy cập vào đối tượng đầy đủ, không chỉ "trước thuộc tính "được gán". –
Xin chào, mã của bạn dường như hoạt động, cảm ơn. Có một lỗi nhỏ mặc dù. Nó sẽ không hiển thị mục Văn bản trong hộp danh sách. Nó viết Namespace.SomeData .... Phần giá trị hoạt động hoàn hảo mặc dù, cảm ơn! – CasperT