یک لیست باکس و یک textbox بر روی فرم قرار می دیم :
به کد زیر توجه کنید
using System;
using System.Windows.Forms;
using System.Collections.Generic;
namespace WindowsFormsApp3
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
List<Person> persons = new List<Person>()
{
new Person() { ID = 1, Name = "Jack" },
new Person() { ID = 2, Name = "Crola" },
new Person() { ID = 3, Name = "John" },
};
listBox1.DataSource = persons;
listBox1.ValueMember = "ID";
listBox1.DisplayMember = "Name";
}
private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
{
textBox1.Text = listBox1.SelectedValue.ToString();
}
class Person
{
public int ID { get; set; }
public string Name { get; set; }
}
}
}
در کد بالا ما یک کلاس تعریف کرده ایم که دارای دو خاصیت Name و ID هست. سپس لیستی از این کلاس را ایجاد کرده و listbox را به وسیله آن پر می کنیم. در کد بالا دو خاصیت ValueMember و DisplayMember را به ترتیب برابر با خاصیت های ID و Name کلاس Person قرار می دهیم. همانطور که می دانید مقداری که در خاصیت DisplayMember قرار داده می شود به کاربر نمایش داده می شود و مقداری که در ValueMember هست در پس زمینه قرار گرفته و نمایش داده نمی شود. به طور ساده تر آیتم های لیست باکس همان مقادیر Name هستن و اندیسشون هم مقادیر ID. کار خاصیت selectedValue اینه که مقداری که در خاصیت ValueMember هست رو نشون میده :
حال اگه شما خطوط 23 و 24 رو به صورت زیر تغییر بدین
listBox1.ValueMember = "Name";
listBox1.DisplayMember = "ID";
با کلیک بر روی هر آیتم خاصیت Name توی تکس باکس نمایش داده می شه