【问题标题】:Assign a label and a value to each element of a combobox (c# - winforms)为组合框的每个元素分配一个标签和一个值(c# - winforms)
【发布时间】:2016-03-07 20:47:39
【问题描述】:

[c#]

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

示例:
data_read

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

是否可以为组合框的任何项目分配标签(即“姓氏”)和值(即“id”)?!


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

简而言之,我可以做一些类似于 HTML 选项值的事情,其中​​每个标签(通过fogazzaro、通过罗马等......我们都有一个关联的值)。

<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>

抱歉英语不好。

我希望你能理解我。

适合所有人的好代码! :)

【问题讨论】:

标签: c# winforms combobox multivalue


【解决方案1】:

实现此目的的一种方法是创建一个具有两个字段的类,IDSurname。然后使用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);
}

【讨论】:

    【解决方案2】:

    创建一个类来存储您的数据,并重写 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'
    }
    

    【讨论】:

      【解决方案3】:

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

      SelectedValuePath="Key" DisplayMemberPath="Value"
      

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-08-19
        • 1970-01-01
        • 2015-03-17
        • 1970-01-01
        • 1970-01-01
        • 2016-06-20
        • 1970-01-01
        • 2020-04-05
        相关资源
        最近更新 更多