我目前有一个带有几个框的CheckedListBox。我希望能够测试列表中的每个Checkbox以查看它是否已被选中,如果是,则将其文本值(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的标签文本。对此有任何帮助将非常感激。
答案 0 :(得分: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()));
答案 1 :(得分:3)
试试这个:
for (int i = 0; i < multiTaskChecks.Items.Count; i++)
{
if (multiTaskChecks.GetItemChecked(i))
{
checkedMultiTasks.Add(multiTaskChecks.GetItemText(multiTaskChecks.Items[i]));
}
}
ListControl.GetItemText Method
注意对此方法有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.
答案 2 :(得分:1)
这应该有效:
var checkedMultiTasks = new List<string>();
foreach(var item in multiTaskChecks.CheckedItems) {
checkedMultiTasks.Add(item.ToString());
}