gpt4 book ai didi

c# - 从填充有字典的列表框中检索多个键

转载 作者:行者123 更新时间:2023-11-30 20:45:14 25 4
gpt4 key购买 nike

我有一个列表框,通过字典填充了星期几:

private Dictionary<int, string> Days()
{
Dictionary<int, string> day = new Dictionary<int, string>();
day.Add(1, "Sunday");
day.Add(2, "Monday");
day.Add(3, "Tuesday");
day.Add(4, "Wednesday");
day.Add(5, "Thursday");
day.Add(6, "Friday");
day.Add(7, "Saturday");
return day;
}


private void SetDays()
{
listBoxDays.DataSource = new BindingSource(Days(), null);
listBoxDays.DisplayMember = "Value";
listBoxDays.ValueMember = "Key";
listBoxDays.SelectedIndex = 0;
}

列表框设置为多选,我想从所选项目中获取所有字典键...每当我尝试循环时,我只获得为整个集合选择的第一个键的值。

private void GatherDays()
{
List<int> list = new List<int>();

foreach (var item in listBoxDays.SelectedItems)
{
list.Add((int)listBoxDays.SelectedValue);
}
}

很容易获得单个选定项的键,但我很难尝试获得多个选定项。

最佳答案

修改您的 GatherDays 方法,例如:

private void GatherDays()
{
List<int> list = new List<int>();
foreach (KeyValuePair<int, string> item in listBoxBuildDays.SelectedItems)
{
list.Add(item.Key);
}
}

或者您可以使用 LINQ 缩短代码,例如:

List<int> list =listBoxBuildDays.SelectedItems
.OfType<KeyValuePair<int, string>>()
.Select(r => r.Key)
.ToList();

目前问题是由于:

 list.Add((int)listBoxDays.SelectedValue);

SelectedValue 表示 Items 中最低索引处的选定值。

参见:ListControl.SelectedValue Property

If multiple items are selected, the value of the selected item with the lowest index is returned. If no item is selected, an empty string ("") is returned.

这就是您在列表中只看到一个值的原因。

还有一点要补充。

您可以使用 DayOfWeek enumeration为您的工作而不是字典,如:

SetDays

private void SetDays()
{
listBoxBuildDays.DataSource = Enum.GetValues(typeof(DayOfWeek));
listBoxBuildDays.SelectedIndex = 0;
}

GatherDays

private void GatherDays()
{
List<int> list = listBoxBuildDays
.SelectedItems.Cast<DayOfWeek>()
.Select(r => (int) r)
.ToList();
}

但唯一不同的是数字(索引),它以 0 开头,而不是字典中的 1

关于c# - 从填充有字典的列表框中检索多个键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28441451/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com