从checklistbox checkitems列表中获取字符串值

时间:2013-11-21 18:11:53

标签: c# validation

我正在尝试设置验证,如果用户检查了某个值,则在保存数据之前,还必须检查同一页面上但在另一个复选框列表中的另一个值。

我正在尝试以这种方式设置嵌套的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;
         }
      }
   } 
}

1 个答案:

答案 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中项目的基础数据类型。代码没问题。否则你必须提供更多信息。