我在 C# .Net 中的复选框控件有奇怪的问题
我下面的代码显示了所有需要的逻辑 - _itemsChecked 是一个包含所有 _fixtures 以及它们是真还是假(选中或未选中)的私有字典
我想要的是能够搜索我的检查清单,同时保留以前检查过的清单。如果搜索结果中包含选中的项目,我希望它被选中。
该代码几乎可以工作!但由于某种原因,这里和那里随机检查框,它似乎可以通过调试工作,但是当屏幕返回到控件时,它就没有工作了。
当然我错过了一些非常简单的东西。
我的逻辑是:
DataSource 包括与键入的搜索查询匹配的那些,遍历此列表并检查字典中的 Guid 是否为真。如果它是真的,那么我们将它设置为选中。
希望我提供了足够的信息。
提前谢谢了。
private void searchTextBox_KeyUp(object sender, EventArgs e)
{
lst.DataSource = _fixtures
.OrderBy(f =>
f.Description)
.Where(f =>
f.Description.ToLower().Contains(searchFixturesTextBox.Text.ToLower()))
.ToList();
lst.DisplayMember = "Description";
for (var i = 0; i < lst.Items.Count; i++)
if(_itemsChecked.Contains(new KeyValuePair<Guid, bool>(((Fixture)lst.Items[i]).Guid, true)))
lst.SetItemChecked(i, true);
}
void lst_ItemCheck(object sender, ItemCheckEventArgs e)
{
var selectedItem = ((ListBox) sender).SelectedItem as Fixture;
if (selectedFixtureItem != null)
_itemsChecked[selectedItem.Guid] = e.CurrentValue == CheckState.Unchecked;
}