阅读c#组合框文本和值?

时间:2015-06-06 08:45:05

标签: c# combobox

我编写了这段代码,以便将值和文本保存到组合框中:

NTuple


public class ComboboxItem
{
    public string Text { get; set; }
    public object Value { get; set; }

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


我想将我的查询两个字段保存到组合框,第一个标题字段和第二个id字段,我需要在其他我的应用程序中搜索id唯一字段,例如当我想用这个方法读取组合框数据和值时: BR />

ComboboxItem item = new ComboboxItem();
for (int i = 0; i < query.Count(); i++)
{
    item.Text = query[i].gaptitle1.ToString();
    item.Value = query[i].id.ToString();

    comboBox2.Items.Add(item);
 }

使用上面的代码,当用户触发按钮组合框时,我希望文本保存到列表框1和id保存到listbox2中,但显示最新值。

1 个答案:

答案 0 :(得分:1)

您的问题是,您应该在<{1}}循环中定义<{1}} ,因为您当前正在向item添加相同的项目一次针对查询中的每个结果,同时还更新项目的文本和值以匹配当前查询结果。在循环结束时,您最终会得到for个完整相同的项,这些项都等于查询中的最后一项。这就是您的代码应该的样子:

ComboBox

为了整洁/安全,我建议您更改&#34;添加&#34;代码:

ComboBox

首先,如果您知道所选项目是for (int i = 0; i < query.Count(); i++) { ComboboxItem item = new ComboboxItem(); item.Text = query[i].gaptitle1.ToString(); item.Value = query[i].id.ToString(); comboBox2.Items.Add(item); } ,则使用listBox1.Visible = true; var selectedItem = (ComboboxItem)comboBox2.SelectedItem; listBox1.Items.Add(selectedItem.Text); listBox2.Items.Add(selectedItem.Value); 毫无意义。明确的演员意图更清晰。其次,直接从您的ComboboxItem读取您的值更安全,而不是假设as的{​​{1}}将始终包含绑定项目&#39; s ComboboxItem