为组合框的每个元素分配一个标签和一个值(c# - winforms)
Assign a label and a value to each element of a combobox (c# - winforms)
[c#]
读取数据库中的数据后,我想在组合框中插入并为任何插入分配一个值。
示例:
data_read
我没有在组合框中插入姓氏的问题。
但是我在 surname1 at id 1...surname2 at id 12 等中分配时遇到问题...
我需要分配我从查询中读取的值
并且不使用 if
或 case
语句进行赋值。
可以为组合框的任何项目分配标签(即'surname')和值(即'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>
抱歉英语不好。
希望你能理解我。
适合所有人的好代码! :)
实现此目的的一种方法是创建一个包含两个字段的 class,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);
}
创建一个 class 来存储您的数据,并将 ToString() 方法重写为 return 您希望在组合框中看到的文本。
class Item
{
public int ID { get; set; }
public string Name { get; set; }
public override string ToString()
{
return Name;
}
}
然后将此 class 的对象添加到组合框。
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'
}
如果您的 ID 是唯一的,您可以有一个字典,其中键是 ID,值是姓氏。在您的组合框中添加
SelectedValuePath="Key" DisplayMemberPath="Value"
并使 ItemsSource 成为字典。这样,组合框的 SelectedItem 将是 ID,但 "label" 将是姓氏
[c#]
读取数据库中的数据后,我想在组合框中插入并为任何插入分配一个值。
示例:
data_read
我没有在组合框中插入姓氏的问题。
但是我在 surname1 at id 1...surname2 at id 12 等中分配时遇到问题...
我需要分配我从查询中读取的值
并且不使用 if
或 case
语句进行赋值。
可以为组合框的任何项目分配标签(即'surname')和值(即'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>
抱歉英语不好。
希望你能理解我。
适合所有人的好代码! :)
实现此目的的一种方法是创建一个包含两个字段的 class,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);
}
创建一个 class 来存储您的数据,并将 ToString() 方法重写为 return 您希望在组合框中看到的文本。
class Item
{
public int ID { get; set; }
public string Name { get; set; }
public override string ToString()
{
return Name;
}
}
然后将此 class 的对象添加到组合框。
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'
}
如果您的 ID 是唯一的,您可以有一个字典,其中键是 ID,值是姓氏。在您的组合框中添加
SelectedValuePath="Key" DisplayMemberPath="Value"
并使 ItemsSource 成为字典。这样,组合框的 SelectedItem 将是 ID,但 "label" 将是姓氏