为组合框的每个元素分配标签和值(c# - winforms)

时间:2016-03-07 20:47:39

标签: c# winforms combobox multivalue

并[c#]

在数据库中读取数据后,我想在组合框中插入并为任何插入分配一个值。

示例:
data_read

没有 在组合框中插入姓氏的问题。 但我有一个问题是在id 1中分配surname1 ...在id 12等的surname2 ... 我需要分配从查询中读取的值 并且不会使用ifcase声明进行分配。

可以为任何组合框分配标签(即'姓')和值(即'id')?!


有可能在组合框中看不到'id'吗?

简而言之,我可以做类似HTML选项值的事情,每个标签的位置(通过fogazzaro,通过roma等......我们有一个相关的值)。

<select name="sedi">
  <option value="1">Via fogazzaro</option>
  <option value="22">Via roma</option>
  <option value="38">Via Olevano</option>
  <option value="42">Via Mazzini</option>
</select>

抱歉英语不好。

我希望你了解我。

所有人都有良好的代码! :)

3 个答案:

答案 0 :(得分:0)

实现此目的的一种方法是创建一个包含两个字段的类, ID Surname 。然后使用SelectedIndex属性将用户的选择解析为集合中的索引:

class Person
{
    ID { get; set }
    Surname { get; set; }      
}

Person个对象的集合放入List(可能是真实世界的示例,它将从数据库中读取并在循环中填充列表):

List<Person> people = new List<Person>() {
    new Person()
    {
        ID = 1,
        Surname = "Smith"
    },
    ...
};

当用户从列表中选择一个项目时,使用所选索引解析Person对象实例:

private void ComboBox_SelectedIndexChanged(object sender, System.EventArgs e)
{
    // Do something useful with your object:
    MessageBox.Show(
        "You selected:\n" + 
        people[comboBox.SelectedIndex].ID + "\n" + 
        people[comboBox.SelectedIndex].Surname);
}

答案 1 :(得分:0)

创建一个用于存储数据的类,并覆盖ToString()方法以返回您希望在组合框中看到的文本。

class Item
{
    public int ID { get; set; }
    public string Name { get; set; }

    public override string ToString()
    {
        return Name;
    }
}

然后将此类的对象添加到组合框中。

comboBox.Items.Add(new Item() {ID = 1, Name = "Fred"});
comboBox.Items.Add(new Item() {ID = 2, Name = "Jane"});

然后,访问所选项目(在处理程序或任何地方):

Item selected = comboxBox.SelectedItem as Item;

if (selected != null)
{
    // do something with 'selected'
}

答案 2 :(得分:0)

如果您的ID是唯一的,您可以使用字典,其中键是ID,值是姓氏。在你的组合框中添加

SelectedValuePath="Key" DisplayMemberPath="Value"

并使ItemsSource成为字典。这样组合框的SelectedItem将是ID,但&#34;标签&#34;将是姓氏