Winforms 如何为Windows窗体组合框中的条目设置值?
我想要一个包含12个选项的下拉列表 我发现ComboBox是我所需要的(如果有更好的控件,请告诉我) 我使用VS2012将组合框拖放到面板中,然后单击组合框上显示的左箭头。以下向导显示: 如您所见,我只能键入选项的名称,但不能键入其值 我的问题是如何获得这些选择的价值 我试过的 我构建了一个与选项长度相同的数组,因此当用户选择任何选项时,我会得到该选项的位置,并从该数组中获取值Winforms 如何为Windows窗体组合框中的条目设置值?,winforms,combobox,windows-forms-designer,Winforms,Combobox,Windows Forms Designer,我想要一个包含12个选项的下拉列表 我发现ComboBox是我所需要的(如果有更好的控件,请告诉我) 我使用VS2012将组合框拖放到面板中,然后单击组合框上显示的左箭头。以下向导显示: 如您所见,我只能键入选项的名称,但不能键入其值 我的问题是如何获得这些选择的价值 我试过的 我构建了一个与选项长度相同的数组,因此当用户选择任何选项时,我会得到该选项的位置,并从该数组中获取值 有更好的方法吗?您需要使用数据表,然后从中选择值。 (例如) 然后,您可以使用以下方法填充数据表: dt.Rows
有更好的方法吗?您需要使用数据表,然后从中选择值。 (例如) 然后,您可以使用以下方法填充数据表:
dt.Rows.Add("1","ComboxDisplay");
这里,DisplayMember(下拉列表项)是说明
,值是ID
您需要在组合框中包含“SelectedIndexChanged”事件(如果使用VS,则在设计模式下双击控件)以获取新值。比如:
private void ComboBox_SelectedIndexChanged(object sender, EventArgs e)
{
int ID = Combobox.ValueMember;
string Description = ComboBox.DisplayMember.ToString();
}
然后,您可以在代码的其余部分使用这些变量 您需要使用数据表,然后从中选择值。 (例如) 然后,您可以使用以下方法填充数据表:
dt.Rows.Add("1","ComboxDisplay");
这里,DisplayMember(下拉列表项)是说明
,值是ID
您需要在组合框中包含“SelectedIndexChanged”事件(如果使用VS,则在设计模式下双击控件)以获取新值。比如:
private void ComboBox_SelectedIndexChanged(object sender, EventArgs e)
{
int ID = Combobox.ValueMember;
string Description = ComboBox.DisplayMember.ToString();
}
然后,您可以在代码的其余部分使用这些变量 不能使用向导存储值和文本。要存储DisplayText/Value对,组合框需要连接到一些数据
public class ComboboxItem
{
public string DisplayText { get; set; }
public int Value { get; set; }
}
组合框上有两个属性-DisplayMember和ValueMember。我们使用这些来告诉组合框-显示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;
不能使用向导存储值和文本。要存储DisplayText/Value对,组合框需要连接到一些数据
public class ComboboxItem
{
public string DisplayText { get; set; }
public int Value { get; set; }
}
组合框上有两个属性-DisplayMember和ValueMember。我们使用这些来告诉组合框-显示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;
这是否连接到数据集?你所说的价值观是什么意思?
DisplayMember
是否不是该值-它是您希望作为值的数据库ID吗?@KidCode否它未连接到任何数据源,这些只是静态选择,永远不会更改。它是否连接到数据集?你所说的价值观是什么意思?DisplayMember
是否不是该值-它是来自数据库的ID吗?您想成为值吗?@KidCode否它未连接到任何数据源,这些只是一个静态选项,永远不会更改ComboxBox 1的可能重复项。DisplayMember必须是列表而不是字符串,对吗?DisplayMember是源上应显示的属性的名称。我得到了此异常对象引用未设置为对象的实例。
在这一行intselectedValue=(int)comboBox1.selectedValue代码>+1感谢您的努力,但另一个答案帮助我更好。感谢ComboxBox 1。DisplayMember必须是列表而不是字符串,对吗?DisplayMember是源上应显示的属性的名称。我得到此异常对象引用未设置为对象的实例。
在此行int-selectedValue=(int)Combox1.selectedValue代码>+1感谢您的努力,但另一个答案帮助我更好。谢谢我注意到我发布的代码中有一些不一致的地方,我已经编辑了我的答案,让你更容易理解!我注意到我发布的代码中有一些不一致的地方,我已经编辑了我的答案,以便您更容易理解!