2012-11-22 71 views
1

我想要做的是檢查listView(column5)是否包含任何與單詞'是'的項目。如果它寫的是'好的',如果列中不包含ALL中的任何項目,並且'Yes'字樣寫'Bad'。C#:if else語句與listView

現在發生什麼事情是我的程序只寫Bad(else語句),即使列確實包含具有單詞'是'的項目。

我怎樣才能解決這個問題?:

foreach (ListViewItem item in listView1.Items) { 
    if (item.SubItems[5].Text.Contains("Yes")) { 
     // Do your work here 
     labelContainsVideo2.Text = "GREAT"; 
     labelContainsVideo2.ForeColor = System.Drawing.Color.Green; 
    } else { 
     labelContainsVideo2.Text = "BAD"; 
     labelContainsVideo2.ForeColor = System.Drawing.Color.Red; 
    } 
} 
+0

你能提供一些數據,您正在使用? –

+2

你是否意識到唯一可以計數的項目是最後一個? – Diego

+0

您是否檢查過數據綁定後執行此操作? – jbl

回答

1

如果在列表的最後一個項目不包含「是」,那麼輸出將是「BAD」,不管什麼其他項目包含。

試試這個...

string message = "BAD"; 
var msgColor = System.Drawing.Color.Red; 
foreach (ListViewItem item in listView1.Items) 
{ 
    if (item.SubItems[5].Text.Contains("Yes")) 
    { 
     message = "GREAT"; 
     msgColor = System.Drawing.Color.Green; 
     break; // no need to check any more items - we have a match! 
    } 
} 
labelContainsVideo2.Text = message ; 
labelContainsVideo2.ForeColor = msgColor; 
+0

謝謝,你是他第一次迴應工作,謝謝 –

2

也許對於這樣的?

foreach (ListViewItem item in listView1.Items) 
{ 
    if (item.SubItems[5].Text.ToUpper().Contains("YES")) 
    { 
    // Do your work here 
    labelContainsVideo2.Text = "GREAT"; 
    labelContainsVideo2.ForeColor = System.Drawing.Color.Green; 
    } 
    else 
    { 
    labelContainsVideo2.Text = "BAD"; 
    labelContainsVideo2.ForeColor = System.Drawing.Color.Red; 
    } 
} 

另外,請記住,這樣它只會計數最後的item。如果你想顯示所有項目狀態,你應該有一個標籤數組或其他東西。如果你想知道的是任何項目包含'是',你應該遵循@ZombieSheep答案。

+0

沒有工作。 「是」這個詞寫成「是」,而不是是 –

+0

當我將文本轉換爲大寫時,它應該搜索'是',而不是'是'。 – Diego

1

試試這個:

if(listView1.Items.Cast<ListViewItem>().Any(i => i.SubItems[5].Text.ToLower().Contains("yes"))){ 
    labelContainsVideo2.Text = "GREAT"; 
    labelContainsVideo2.ForeColor = System.Drawing.Color.Green; 
} 
else 
{ 
    labelContainsVideo2.Text = "BAD"; 
    labelContainsVideo2.ForeColor = System.Drawing.Color.Red; 
}