组合框 c# 选定项不起作用
本文关键字:不起作用 组合 | 更新日期: 2023-09-27 18:36:25
我是C#的大三学生。我对组合框有问题。当我使用SelectedItem时,我想要什么。SelectedItem 始终返回组合框中的最后一个项目,但是当我使用 SelectedIndex 时,返回正确的结果。
组合框中的示例是 3 项:管理员、审核、推销员。总是返回销售员,当我使用SelectedItem时,即使我选择管理员。
有我的代码:
类组合框项
class ComboboxItem
{
public string Text { get; set; }
public object Value { get; set; }
public override string ToString()
{
return Value.ToString();
}
}
将项目添加到组合框
private void AddItemIntoComboBoxGroup()
{
string query = "SELECT* FROM kites_mango.staff_group; ";
DBUtility data = new DBUtility();
List<string>[] list = data.Select(query);
if (list != null && list[0].Count() > 0)
{
ComboboxItem item = new ComboboxItem();
for (int i = 0; i < list[0].Count(); i++)
{
item.Value = list[0][i];
item.Text = (list[1][i] + " - " + list[0][i]);
CbBGroup.Items.Add(item);
}
}
}
获取所选项目
if (CbBGroup.SelectedItem != null)
{
MessageBox.Show(CbBGroup.SelectedIndex + "/" + CbBGroup.SelectedItem.ToString());
}
你在 for 循环之前实例化 ComboboxItem 对象。这样,对于 for 语句中的每个循环,您都会更改同一对象的属性,从而使之前在列表中加载的对象也会被修改。也就是说,您的列表可能有 3 个 itens,但它们将具有相同的值 (Salesman),因为列表中的所有 iten 都具有相同的对象引用。
只需从此更改:
ComboboxItem item = new ComboboxItem();
for (int i = 0; i < list[0].Count(); i++)
{
item.Value = list[0][i];
item.Text = (list[1][i] + " - " + list[0][i]);
CbBGroup.Items.Add(item);
}
对此:
for (int i = 0; i < list[0].Count(); i++)
{
ComboboxItem item = new ComboboxItem();
item.Value = list[0][i];
item.Text = (list[1][i] + " - " + list[0][i]);
CbBGroup.Items.Add(item);
}