5

ユーザーがクラスに関する情報を保存できるアプリケーションを作成しています。私のアプリケーションには、ユーザーが情報を入力できるボタンがあり、それが の項目と一致する場合は、listBoxそれに関する情報を表示する必要があります。

Items[0]の位置 (例: ) で特定のアイテムを指定し、listBoxそれを文字列に変換する場合にのみ、機能させることができます。私の目的は、 内のすべてのアイテムを比較することですlistBox

private void button3_Click(object sender, EventArgs e)
{
    if (listBox2.Items[0].ToString() == "PersonalInfo")
    {
        label.Text = "test";               
    }
}
4

3 に答える 3

7

リスト内のすべての項目をループする必要があります。次のようなことを試してください:

foreach(var item in listBox2.Items)
{
  if(item.ToString() == stringToMatch)
  {
    label.Text = "Found a match";
  }
}

代替のより単純な実装 (すべての項目をチェックし続けるのではなく、一致が見つかった場合に停止します) は次のようになります。

if(listBox2.Items.Any(item => item.ToString() == stringToMatch))
{
  label.Text = "Found a match";
}
于 2012-06-13T19:20:18.470 に答える
6

各項目をチェックするループを書く

foreach(var item in listBox2.Items)
{
  if (item.ToString()== "PersonalInfo")
  {
     label.Text = "test";
     break; // we don't want to run the loop any more.  let's go out              
  }    
}
于 2012-06-13T19:19:15.240 に答える
5

さて、LINQを使用できます...次のようなもの:

if (listBox2.Items
            .Cast<object>()
            .Select(x => x.ToString())
            .Contains("PersonalInfo"))
{
    label.Text = "test";
}

または、最初の一致の詳細を取得したい場合:

var match = listBox2.Items
                    .Cast<object>()
                    .FirstOrDefault(x => x.ToString() == "PersonalInfo");
if (match != null)
{
    // Use match here
}
于 2012-06-13T19:19:09.250 に答える