winforms 如何为Windows窗体组合框中的项设置值?

uklbhaso  于 2023-06-06  发布在  Windows
关注(0)|答案(2)|浏览(205)

我想有一个下拉列表与12个选择。
我发现ComboBox是我所需要的(如果有更好的控件请好心告诉我)。
我使用VS2012将一个组合框拖放到一个面板中,然后单击出现在组合框上的左箭头。以下向导显示:

正如您所看到的,我只能键入选项的名称,但不能键入其值。

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

我所尝试的

我构建了一个长度与选项相同的数组,因此当用户选择任何选项时,我都会获取该选项的位置并从该数组中获取值。
有更好的办法吗?

kuuvgm7e

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,请在设计模式中双击控件)以获取新值。类似于:

private void ComboBox_SelectedIndexChanged(object sender, EventArgs e)
    {
        int ID = Combobox.ValueMember;
        string Description = ComboBox.DisplayMember.ToString();

    }

然后,您可以在代码的其余部分使用这些变量。

f45qwnt8

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;

相关问题