我正在创建一个允许用户存储有关其类的信息的应用程序.我的应用程序中有一个按钮,允许用户输入信息,如果它与listBox当时的任何项目匹配,它应显示有关它的信息.
但我只能让它适用于listBox诸如位置[0]等特定项目位置.
我的目标是让一些人如何比较所有项目listBox.任何帮助,将不胜感激.谢谢.
private void button3_Click(object sender, EventArgs e)
{
if (listBox2.Items[0].ToString() == "PersonalInfo")
{
label.Text = "test";
}
}
Run Code Online (Sandbox Code Playgroud)
写一个循环来检查每个项目
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
}
}
Run Code Online (Sandbox Code Playgroud)
你已经硬编码了Items[0].您需要循环遍历列表中的所有项目,而不是仅查看一个项目.尝试这样的事情:
foreach(var item in listBox2.Items)
{
if(item.ToString() == stringToMatch)
{
label.Text = "Found a match";
}
}
Run Code Online (Sandbox Code Playgroud)
一个替代的,更简单的实现(如果/当它找到匹配而不是继续检查每个项目时将停止)将是
if(listBox2.Items.Any(item => item.ToString() == stringToMatch))
{
label.Text = "Found a match";
}
Run Code Online (Sandbox Code Playgroud)
那么你可以使用LINQ ...这样的事情:
if (listBox2.Items
.Cast<object>()
.Select(x => x.ToString())
.Contains("PersonalInfo"))
{
label.Text = "test";
}
Run Code Online (Sandbox Code Playgroud)
或者,如果您想获得第一场比赛的详细信息:
var match = listBox2.Items
.Cast<object>()
.FirstOrDefault(x => x.ToString() == "PersonalInfo");
if (match != null)
{
// Use match here
}
Run Code Online (Sandbox Code Playgroud)