2013-11-21 59 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

在您編輯之前它是參考比較:) –