从checklistbox中获取CheckBox的标签文本

本文关键字:标签 文本 CheckBox 获取 checklistbox | 更新日期: 2023-09-27 18:06:09

我目前有一个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中获得这些复选框中的一个的标签文本。如果有任何帮助,我将不胜感激。

从checklistbox中获取CheckBox的标签文本

首先,您应该能够像这样循环遍历选中的项

foreach (var item in multiTaskChecks.CheckedItems)
{
}

然后根据item的类型,从中获得您想要的任何属性。听起来像是一个文本或者你只是想要一个字符串,所以

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

或者I prefer

checkedMultiTasks.AddRange(multiTaskChecks.CheckedItems.
    OfType<object>().Select(‌​i => i.ToString()));

试试这个:

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.

应该可以:

var checkedMultiTasks = new List<string>();
foreach(var item in multiTaskChecks.CheckedItems) {
    checkedMultiTasks.Add(item.ToString());
}