DataTable
にバインドされたCheckedListBox
があります。今度はプログラムによっていくつかの項目をチェックする必要がありますが、SetItemChecked(...)
メソッドは項目インデックスのみを受け付けます。CheckedListBox - テキストで項目を検索
アイテムインデックスを知らなくても、テキスト/ラベルでアイテムを取得する実際的な方法はありますか?
(注:私はWinFormsの持つ限られた経験を持っている...)
DataTable
にバインドされたCheckedListBox
があります。今度はプログラムによっていくつかの項目をチェックする必要がありますが、SetItemChecked(...)
メソッドは項目インデックスのみを受け付けます。CheckedListBox - テキストで項目を検索
アイテムインデックスを知らなくても、テキスト/ラベルでアイテムを取得する実際的な方法はありますか?
(注:私はWinFormsの持つ限られた経験を持っている...)
あなたはcheckListBoxは、リスト内の項目を表示するためにobject.ToString()
を使用して、独自の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;
}
を実装することができます。すべてのオブジェクトを検索するメソッドを実装できます。アイテムインデックスを取得するには、ToString()を使用します。アイテムインデックスを取得したら、SetItemChecked(int, bool);
とすることができます。
あなたはあなたのDatatableを閲覧しようとするかもしれません。あなたは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
乾杯、
は、多分それは私の中で 'のDataTableとの結合に依存しますが、' o.ToString() '' System.Data.DataRowView ''を返すので、' myCheckedListBox.GetItemText(o) 'を使用しなければならないと思います... – davioooh
はい、あなたは正しくて –
"実用的な方法 "を見たとき、それを行うには...しかし、そのようなものは、フレームワークによって提供されるようですので、私はあなた自身が提案したように私自身のメソッドを実装します。どうもありがとうございました。 – davioooh