我有一些包含一些数据的字典:
_myDictionary = new Dictionary<string, bool>
{
{ "a",true},
{ "b",false},
{ "c",true},
{ "d",false},
};
我想用这些数据填充CheckedListBox,所以我执行以下操作:
foreach (string key in _myDictionary.Keys)
{
myCheckedListBox.Items.Add(key, _myDictionary[key]);
}
直到那里一切顺利。现在我需要使用CheckedListBox中的所选项更新字典(从对中更新bool)。
我试图让foreach为字典中的每个对分配,但CheckedListBox.Items需要一个索引。
也许字典不是存储这些数据的最佳结构。
Ant的想法?
答案 0 :(得分:0)
我通过以下方式解决了我的问题:
for (int i = 0; i < myCheckedListBox.Items.Count; i++)
{
string key = (String)myCheckedListBox.Items[i];
_myDictionary[key] = myCheckedListBox.GetItemChecked(i);
}
答案 1 :(得分:0)
您可以执行以下操作来绑定 var list = new List<RandomClass>()
{
new RandomClass() {Checked = true, ValueDisplayed = "1"},
new RandomClass() {Checked = false, ValueDisplayed = "2"},
new RandomClass() {Checked = true, ValueDisplayed = "3"}
};
checkedListBox1.DataSource = list;
checkedListBox1.DisplayMember = "ValueDisplayed";
for (int i = 0; i < checkedListBox1.Items.Count; ++i)
{
checkedListBox1.SetItemChecked(i, ((RandomClass)checkedListBox1.Items[i]).Checked);
}
checkedListBox1.ItemCheck += (sender, e) => {
list[e.Index].Checked = (e.NewValue != CheckState.Unchecked);
};
public class RandomClass
{
public string ValueDisplayed { get; set; }
public bool Checked { get; set; }
}
:
(您必须手动跟踪更改)
public void setIsActive(String active) {
this.active = "Y".equalsIgnoreCase(active);
}