ตามที่คุณอ้างถึง combobox ฉันสมมติว่าคุณไม่ต้องการใช้การเชื่อมต่อฐานข้อมูลแบบ 2 ทาง (ถ้าเป็นเช่นนั้นให้ดูที่การใช้ a BindingList
)
public class Country
{
public string Name { get; set; }
public IList<City> Cities { get; set; }
public Country(string _name)
{
Cities = new List<City>();
Name = _name;
}
}
List<Country> countries = new List<Country> { new Country("UK"),
new Country("Australia"),
new Country("France") };
var bindingSource1 = new BindingSource();
bindingSource1.DataSource = countries;
comboBox1.DataSource = bindingSource1.DataSource;
comboBox1.DisplayMember = "Name";
comboBox1.ValueMember = "Name";
เพื่อหาประเทศที่เลือกใน ComboBox Country country = (Country)comboBox1.SelectedItem;
ถูกผูกไว้คุณจะทำสิ่งที่ชอบ:
หากคุณต้องการให้ ComboBox อัปเดตแบบไดนามิกคุณจะต้องตรวจสอบให้แน่ใจว่าโครงสร้างข้อมูลที่คุณตั้งไว้เป็นDataSource
เครื่องมือIBindingList
นั้น BindingList<T>
หนึ่งในโครงสร้างดังกล่าวเป็น
เคล็ดลับ: ตรวจสอบให้แน่ใจว่าคุณเชื่อมโยงDisplayMember
กับคุณสมบัติบนคลาสไม่ใช่ฟิลด์สาธารณะ ถ้าคลาสของคุณใช้public string Name { get; set; }
มันจะได้ผล แต่ถ้าใช้public string Name;
มันจะไม่สามารถเข้าถึงค่าได้และจะแสดงประเภทออบเจ็กต์สำหรับแต่ละบรรทัดในกล่องคำสั่งผสมแทน