我在组合框中有几个键值对。
this.cbEndQtr.Items.Clear();
this.cbEndQtr.Items.Add(new KeyValuePair<int, string>(1, "Test1"));
this.cbEndQtr.Items.Add(new KeyValuePair<int, string>(2, "Test2"));
通过传入密钥选择传递的最简单方法是什么。例如:
this.cbEndQtr.SelectedItem = 2;
答案 0 :(得分:3)
我认为你可以像这样使用LINQ
:
var key = 2; // get key from somewhere
var items = this.cbEndQtr.Items.OfType<KeyValuePair<int, string>>()
.Select((item,index) => new { item, index);
var index = items.Where(x => x.item.Key == key).Select(x => x.index).First();
this.cbEndQtr.SelectedIndex = index;
答案 1 :(得分:3)
这是一种蛮力方法:
void selectByKey(int key)
{
foreach (var item in cbEndQtr.Items)
if (((KeyValuePair<int, string>)item).Key == key)
{
cbEndQtr.SelectedItem = item;
break;
}
}
我刚刚找到了这一行方法:
cbEndQtr.SelectedItem = cbEndQtr.Items.OfType<KeyValuePair<int, string>>().ToList().FirstOrDefault(i => i.Key == key);
虽然如果找不到比赛,任何事都不会改变。