2013-11-21 27 views
0

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

我想以这种方式设置一个嵌套的foreach,其中我的代码通过一个循环,如果选择值1,它然后检查value2与foreach,如果该值未选中我抛出一个错误信息。

这看起来像它会工作,但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; 
     } 
     } 
    } 
} 

回答

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); 
} 

注意,它仍然在你的checkedlistbox项目的基本数据类型不清楚,如果的文本项目是你的意思是value。代码是好的。否则,你必须提供更多信息。

+0

您是否知道您正在做参考比较?我错过了什么吗? –

+0

@SriramSakthivel @SriramSakthivel错过了ToString,它不是参考比较 –

+0

在您编辑之前它是参考比较:) –