我有一個CheckedListBox
綁定到DataTable
。現在我需要以編程方式檢查一些項目,但我發現SetItemChecked(...)
方法只接受項目索引。CheckedListBox - 通過文本搜索項目
是否有一種實際的方式來獲取文本/標籤的項目,而不知道項目索引?
(注:我有與WinForms的經驗有限...)
我有一個CheckedListBox
綁定到DataTable
。現在我需要以編程方式檢查一些項目,但我發現SetItemChecked(...)
方法只接受項目索引。CheckedListBox - 通過文本搜索項目
是否有一種實際的方式來獲取文本/標籤的項目,而不知道項目索引?
(注:我有與WinForms的經驗有限...)
您可以實現自己的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);
希望它有幫助。
您可以嘗試瀏覽您的Datatable。你可以做一個foreach所DataTabke.Rows屬性或使用如下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
乾杯,
也許這取決於與一個DataTable綁定,但'o.ToString()'在我大小寫返回'「System.Data.DataRowView」',所以我認爲我必須使用'myCheckedListBox.GetItemText(o)'... – davioooh 2012-02-02 10:59:03
是的,你是對的 – 2012-02-02 11:00:54
當我看到「實用的方式」,我的意思是現有的方法要做到這一點......但似乎任何類似的東西都是由框架提供的,所以我會按照您的建議實施我自己的方法。非常感謝你。 – davioooh 2012-02-02 11:12:00