我正在尝试设置验证,如果用户检查了某个值,则在保存数据之前,还必须检查同一页面上但在另一个复选框列表中的另一个值。
我正在尝试以这种方式设置嵌套的foreach,其中我的代码经历一个循环,如果选择了值1,则它会使用foreach检查value2,如果未选择该值,则抛出错误消息
这看起来会起作用,但是itemChecked.tostring()没有以这种方式设置。我在这做错了什么? (注意字符串测试就在我的测试阶段)
foreach (object itemChecked in clst1.CheckedItems)
{
string test = itemChecked.ToString();
if (test == "value1")
{
foreach (object subItemChecked in clst2.CheckedItems)
{
if (subItemChecked.ToString() != "value2")
{
MessageBox.Show("if value 1 is selected value 2 must be selected", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
return false;
}
}
}
}
答案 0 :(得分:2)
试试这个:
if(clst1.CheckedItems.Cast<object>()
.Any(x=>object.Equals(x.ToString(),"value1"))&&
!clst2.CheckedItems.Cast<object>()
.Any(x=>object.Equals(x.ToString(),"value2"))){
MessageBox.Show("if value 1 is selected value 2 must be selected",
"Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
请注意,如果项目的文本是value
的含义,则仍然不清楚checkedlistbox中项目的基础数据类型。代码没问题。否则你必须提供更多信息。