您提供的代码行不正确。组合框的名称ValueMember
应设置为您希望成为所选对象的值的属性或列的名称(例如,唯一 ID)。但是您正在填充字段的内容。ValueMember
当您以这种方式绑定组合框时(使用 和 的组合设置数据源DisplayMember
)ValueMember
,SelectedValue
组合框的属性将填充为ValueMember
所选行的字段值。
例如,假设您有一个 DataTable,其中包含ActorID、Name和BirthDate列,其中包含一些数据:
DataTable dt = new DataTable();
dt.Columns.Add("ActorID", typeof(int));
dt.Columns.Add("Name", typeof(string));
dt.Columns.Add("BirthDate", typeof(DateTime));
dt.Rows.Add(1, "Will Smith", new DateTime(1968,9,25));
dt.Rows.Add(2, "Bruce Willis", new DateTime(1955,3,19));
dt.Rows.Add(3, "Jim Carrey", new DateTime(1962, 1, 17));
dt.Rows.Add(18, "Nicole Kidman", new DateTime(1967,6,20));
ComboBox cb = new ComboBox();
cb.DropDownStyle = ComboBoxStyle.DropDownList;
cb.Location = new Point(20, 100);
cb.Width = 100;
cb.DisplayMember = "Name"; // *****
cb.ValueMember = "ActorID"; // ***** The important part
cb.DataSource = dt;
Button btn = new Button();
btn.Text = "Show ID";
btn.Location = new Point(10, 140);
btn.Click += (sender, e) =>
{
MessageBox.Show(cb.SelectedValue.ToString()); // **** The other important part.
};
Form f = new Form();
f.Controls.Add(cb);
f.Controls.Add(btn);
f.ShowDialog();
当我们读取SelectedValue
组合框的 时,它会为我们获取所选行的“ActorID”。