我有CheckedListBox
绑定到DataTable
。现在我需要以编程方式检查一些项目,但我发现SetItemChecked(...)
方法只接受项目索引。
是否有一种实用的方法可以在不知道项目索引的情况下按文本/标签获取项目?
(注意:我对WinForms的经验有限......)
答案 0 :(得分:10)
您可以实施自己的SetItemChecked(string item);
private void SetItemChecked(string item)
{
int index = GetItemIndex(item);
if (index < 0) return;
myCheckedListBox.SetItemChecked(index, true);
}
private int GetItemIndex(string item)
{
int index = 0;
foreach (object o in myCheckedListBox.Items)
{
if (item == o.ToString())
{
return index;
}
index++;
}
return -1;
}
checkListBox使用object.ToString()
来显示列表中的项目。您可以实现一个搜索所有对象的方法.ToString()来获取项索引。获得项目索引后,您可以致电SetItemChecked(int, bool);
希望它有所帮助。
答案 1 :(得分:0)
您可以尝试浏览数据表。您可以在DataTabke.Rows属性上执行foreach或使用SQL语法,如下所示:
DataTable dtTable = ...
DataRow[] drMatchingItems = dtTable.Select("label = 'plop' OR label like '%ploup%'"); // I assumed there is a "label" column in your table
int itemPos = drMatchingItems[0][id]; // take first item, TODO: do some checking of the length/matching rows
干杯,