Winforms 如何为Windows窗体组合框中的条目设置值?

Winforms 如何为Windows窗体组合框中的条目设置值?,winforms,combobox,windows-forms-designer,Winforms,Combobox,Windows Forms Designer,我想要一个包含12个选项的下拉列表 我发现ComboBox是我所需要的(如果有更好的控件,请告诉我) 我使用VS2012将组合框拖放到面板中,然后单击组合框上显示的左箭头。以下向导显示: 如您所见,我只能键入选项的名称,但不能键入其值 我的问题是如何获得这些选择的价值 我试过的 我构建了一个与选项长度相同的数组,因此当用户选择任何选项时,我会得到该选项的位置,并从该数组中获取值 有更好的方法吗?您需要使用数据表,然后从中选择值。 (例如) 然后,您可以使用以下方法填充数据表: dt.Rows

我想要一个包含12个选项的下拉列表

我发现ComboBox是我所需要的(如果有更好的控件,请告诉我)

我使用VS2012将组合框拖放到面板中,然后单击组合框上显示的左箭头。以下向导显示:

如您所见,我只能键入选项的名称,但不能键入其值

我的问题是如何获得这些选择的价值

我试过的 我构建了一个与选项长度相同的数组,因此当用户选择任何选项时,我会得到该选项的位置,并从该数组中获取值


有更好的方法吗?

您需要使用数据表,然后从中选择值。 (例如)

然后,您可以使用以下方法填充数据表:

 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感谢您的努力,但另一个答案帮助我更好。谢谢我注意到我发布的代码中有一些不一致的地方,我已经编辑了我的答案,让你更容易理解!我注意到我发布的代码中有一些不一致的地方,我已经编辑了我的答案,以便您更容易理解!