1

私は現在、いくつかのボックスを備えたCheckedListBoxを持っています。リスト内のすべてのチェックボックスをテストして、チェックされているかどうかを確認し、チェックされている場合は、そのテキスト値(CheckBox.Text)を文字列のリストに追加できるようにします。

これが私が持っているものです:

for ( int i = 0; i < multiTaskChecks.Items.Count; i++ )
{
    if ( multiTaskChecks.GetItemChecked(i) )
    {
        checkedMultiTasks.Add(multiTaskChecks.GetItemText(i));
    }
}

これを使用すると、GetItemText後のテキスト値の代わりに0、1、2、3などが返されます。私も試してみましCheckedListBox.Text.IndexOf(i)たがCheckedListBox.Text.ToList()、それぞれ運が悪かったです。

CheckedListBoxからこれらのCheckBoxの1つのラベルテキストを取得できません。これに関するどんな助けも本当にありがたいです。

4

3 に答える 3

5

まず、チェックした項目を次のようにループできるようにする必要があります。

foreach (var item in multiTaskChecks.CheckedItems)
{
}

次に、のタイプに応じて、item必要なプロパティを取得します。単なるテキストであるか、文字列が必要なように聞こえます。

foreach (var item in multiTaskChecks.CheckedItems)
{
    checkedMultiTasks.Add(item.ToString());
}

または私は好む

checkedMultiTasks.AddRange(multiTaskChecks.CheckedItems.
    OfType<object>().Select(‌​i => i.ToString()));
于 2011-08-19T04:59:35.100 に答える
3

これを試して:

for (int i = 0; i < multiTaskChecks.Items.Count; i++)
{
    if (multiTaskChecks.GetItemChecked(i))
    {
        checkedMultiTasks.Add(multiTaskChecks.GetItemText(multiTaskChecks.Items[i]));
    }
}

ListControl.GetItemTextメソッド

DisplayMemberこの方法 に関しては注意が必要です。

If the DisplayMember property is not specified, the value returned by GetItemText is the value of the item's ToString method. Otherwise, the method returns the string value of the member specified in the DisplayMember property for the object specified in the item parameter.

于 2011-08-19T04:54:45.167 に答える
1

これは機能するはずです:

var checkedMultiTasks = new List<string>();
foreach(var item in multiTaskChecks.CheckedItems) {
    checkedMultiTasks.Add(item.ToString());
}
于 2011-08-19T04:55:33.227 に答える