我想有一个下拉列表与12个选择。我发现ComboBox是我所需要的(如果有更好的控件请好心告诉我)。我使用VS2012将一个组合框拖放到一个面板中,然后单击出现在组合框上的左箭头。以下向导显示:
正如您所看到的,我只能键入选项的名称,但不能键入其值。
我构建了一个长度与选项相同的数组,因此当用户选择任何选项时,我都会获取该选项的位置并从该数组中获取值。有更好的办法吗?
kuuvgm7e1#
您需要使用一个datatable,然后从中选择值。eg)
DataTable dt = new DataTable(); dt.Columns.Add("ID", typeof(int)); dt.Columns.Add("Description", typeof(string)); dt.Load(reader); //Setting Values combobox.ValueMember = "ID"; combobox.DisplayMember = "Description"; combobox.SelectedValue = "ID"; combobox.DataSource = dt;
然后,您可以使用以下命令填充datatable:
dt.Rows.Add("1","ComboxDisplay");
这里,DisplayMember(下拉列表项)是Descriptions,Value是ID。您需要在组合框中包含一个'SelectedIndexChanged'事件(如果使用VS,请在设计模式中双击控件)以获取新值。类似于:
Descriptions
ID
private void ComboBox_SelectedIndexChanged(object sender, EventArgs e) { int ID = Combobox.ValueMember; string Description = ComboBox.DisplayMember.ToString(); }
然后,您可以在代码的其余部分使用这些变量。
f45qwnt82#
不能使用向导存储值和文本。要存储DisplayText/Value对,组合框需要连接到一些数据。
public class ComboboxItem { public string DisplayText { get; set; } public int Value { get; set; } }
组合框上有两个属性- DisplayMember和ValueMember。我们使用这些来告诉组合框- show what在DisplayMember中,实际值在ValueMember中。
private void DataBind() { comboBox1.DisplayMember = "DisplayText"; comboBox1.ValueMember = "Value"; ComboboxItem item = new ComboboxItem(); item.DisplayText = "Item1"; item.Value = 1; comboBox1.Items.Add(item); }
得到值-
int selectedValue = (int)comboBox1.SelectedValue;
2条答案
按热度按时间kuuvgm7e1#
您需要使用一个datatable,然后从中选择值。eg)
然后,您可以使用以下命令填充datatable:
这里,DisplayMember(下拉列表项)是
Descriptions
,Value是ID
。您需要在组合框中包含一个'SelectedIndexChanged'事件(如果使用VS,请在设计模式中双击控件)以获取新值。类似于:
然后,您可以在代码的其余部分使用这些变量。
f45qwnt82#
不能使用向导存储值和文本。要存储DisplayText/Value对,组合框需要连接到一些数据。
组合框上有两个属性- DisplayMember和ValueMember。我们使用这些来告诉组合框- show what在DisplayMember中,实际值在ValueMember中。
得到值-