1

私がやろうとしているのは、listView(column5)に「Yes」という単語が含まれるアイテムが含まれているかどうかを確認することです。「素晴らしい」と書かれている場合、列に「はい」という単語を含む項目がまったく含まれていない場合は、「悪い」と書きます。

現在起こっていることは、列に「はい」という単語が含まれている場合でも、私のプログラムは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;
    }
}
4

3 に答える 3

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ください。すべてのアイテムの状態を表示する場合は、labels配列などが必要です。アイテムに「はい」が含まれているかどうを知りたい場合は、@ZombieSheepの回答に従う必要があります。

于 2012-11-22T15:15:06.200 に答える
1

リストの最後の項目に「はい」が含まれていない場合、他の項目に含まれているものに関係なく、出力は「不良」になります。

代わりにこれを試してください...

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;
于 2012-11-22T15:17:35.133 に答える
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;
}
于 2012-11-22T15:23:19.637 に答える