我编写了这段代码,以便将值和文本保存到组合框中:
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中,但显示最新值。
答案 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
。