如何检查 ListBox 是否包含与另一个 ListBox 相同的文本
How to check if ListBox contains same text as another ListBox
我有 2 个列表框,我想检查第一个列表框文本,以便将它们添加到第二个列表框。比如,假设我在第一个列表框 ( 02-TH-93 ) 上有一个汽车牌照,现在我想在我的第二个列表框中添加相同的车牌 ( 02-TH-93 ) 但是 如果第一个 ListBox 上不存在该盘子,那么它应该只显示一条消息错误。
例如:
列表框 1:
02-TH-93
|
06-JK-58
|
07-HJ-95
|
02-FG-56
列表框2:
02-TH-93
|
06-JK-58
|
07-HJ-95
|
45-ER-01(现在显示消息错误,因为在 listbox1 上没有匹配的此车牌)
我试过了,但我猜它并没有多大意义:
parking.Entrance = textBoxEntrance.Text;
parking.Exit = textBoxExit.Text;
if(parking.Entrance == parking.Exit)
{
listBoxExit.Items.Add("Plate: " + parking.Exit + " Exited ");
}
谢谢
我假设您的 Listbox.ItemsSource
是一个字符串列表,因此您可以循环遍历其中一个列表并查找这样的匹配项:
private bool IsInFirst(string plateToAdd, List<string> plates)
{
foreach(string plate in plates)
{
if (plate.Equals(plateToAdd))
{
return true;
}
}
return false;
}
如果 returns true
列表包含要添加的车牌,如果 returns false
则不包含。 This 教程帮助了我。
我创建了一个据我所知的变量,所以它会询问 lb1 中是否存在“plate”。如果是就添加如果不是忽略它并制作一个消息框
private bool ExistsCheck(string newPlate, List<string> allPlates)
{
bool result = false;
foreach (var plate in allPlates)
if (plate.Equals(newPlate))
result = true;
return result;
}
private void AddAndCheck_Click(object sender, EventArgs e)
{
List<string> allPlates = new List<string>();
for (int i = 0; i < lb1.Items.Count; i++)
allPlates.Add(lb1.Items[i].ToString());
if (ExistsCheck(tb_plate.Text, allPlates))
{
// If its return False
lb2.Items.Add(tb_plate.Text);
}
else
{
// If its return True
MessageBox.Show("It is not present in listbox 1");
}
}
所以如果我现在理解正确的话,这应该可以满足您的要求。有不懂的再问!
using System;
using System.Collections.Generic;
using System.Windows.Forms;
namespace plateManager
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button_LB1_Click(object sender, EventArgs e)
{
if (!string.IsNullOrWhiteSpace(txtbox1.Text))
lb1.Items.Add(txtbox1.Text);
else
MessageBox.Show("Please enter something!");
txtbox1.Text = "";
}
private void button_LB2_Click(object sender, EventArgs e)
{
//Asks if the textbox is empty or has space
if (!string.IsNullOrWhiteSpace(txtbox2.Text))
{
List<string> allPlates = new List<string>();
/*The list box will be read from top to bottom
and will add each entry in this list box to the list called "allPlates".*/
for (int i = 0; i < lb1.Items.Count; i++)
allPlates.Add(lb1.Items[i].ToString());
if (ExistsCheck(txtbox2.Text, allPlates))
lb2.Items.Add(txtbox2.Text);
else
MessageBox.Show("This license plate was not found!");
}
else
MessageBox.Show("Please enter something!");
//Reset the textbox
txtbox2.Text = "";
}
private bool ExistsCheck(string newPlate, List<string> allPlates)
{
//Each entry will be checked if it matches, if it does, the boolean is set to true and will be returned afterwards.
bool result = false;
foreach (var plate in allPlates)
if (plate.Equals(newPlate))
result = true;
return result;
}
}
}
我有 2 个列表框,我想检查第一个列表框文本,以便将它们添加到第二个列表框。比如,假设我在第一个列表框 ( 02-TH-93 ) 上有一个汽车牌照,现在我想在我的第二个列表框中添加相同的车牌 ( 02-TH-93 ) 但是 如果第一个 ListBox 上不存在该盘子,那么它应该只显示一条消息错误。
例如:
列表框 1: 02-TH-93 | 06-JK-58 | 07-HJ-95 | 02-FG-56
列表框2: 02-TH-93 | 06-JK-58 | 07-HJ-95 | 45-ER-01(现在显示消息错误,因为在 listbox1 上没有匹配的此车牌)
我试过了,但我猜它并没有多大意义:
parking.Entrance = textBoxEntrance.Text;
parking.Exit = textBoxExit.Text;
if(parking.Entrance == parking.Exit)
{
listBoxExit.Items.Add("Plate: " + parking.Exit + " Exited ");
}
谢谢
我假设您的 Listbox.ItemsSource
是一个字符串列表,因此您可以循环遍历其中一个列表并查找这样的匹配项:
private bool IsInFirst(string plateToAdd, List<string> plates)
{
foreach(string plate in plates)
{
if (plate.Equals(plateToAdd))
{
return true;
}
}
return false;
}
如果 returns true
列表包含要添加的车牌,如果 returns false
则不包含。 This 教程帮助了我。
我创建了一个据我所知的变量,所以它会询问 lb1 中是否存在“plate”。如果是就添加如果不是忽略它并制作一个消息框
private bool ExistsCheck(string newPlate, List<string> allPlates)
{
bool result = false;
foreach (var plate in allPlates)
if (plate.Equals(newPlate))
result = true;
return result;
}
private void AddAndCheck_Click(object sender, EventArgs e)
{
List<string> allPlates = new List<string>();
for (int i = 0; i < lb1.Items.Count; i++)
allPlates.Add(lb1.Items[i].ToString());
if (ExistsCheck(tb_plate.Text, allPlates))
{
// If its return False
lb2.Items.Add(tb_plate.Text);
}
else
{
// If its return True
MessageBox.Show("It is not present in listbox 1");
}
}
所以如果我现在理解正确的话,这应该可以满足您的要求。有不懂的再问!
using System;
using System.Collections.Generic;
using System.Windows.Forms;
namespace plateManager
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button_LB1_Click(object sender, EventArgs e)
{
if (!string.IsNullOrWhiteSpace(txtbox1.Text))
lb1.Items.Add(txtbox1.Text);
else
MessageBox.Show("Please enter something!");
txtbox1.Text = "";
}
private void button_LB2_Click(object sender, EventArgs e)
{
//Asks if the textbox is empty or has space
if (!string.IsNullOrWhiteSpace(txtbox2.Text))
{
List<string> allPlates = new List<string>();
/*The list box will be read from top to bottom
and will add each entry in this list box to the list called "allPlates".*/
for (int i = 0; i < lb1.Items.Count; i++)
allPlates.Add(lb1.Items[i].ToString());
if (ExistsCheck(txtbox2.Text, allPlates))
lb2.Items.Add(txtbox2.Text);
else
MessageBox.Show("This license plate was not found!");
}
else
MessageBox.Show("Please enter something!");
//Reset the textbox
txtbox2.Text = "";
}
private bool ExistsCheck(string newPlate, List<string> allPlates)
{
//Each entry will be checked if it matches, if it does, the boolean is set to true and will be returned afterwards.
bool result = false;
foreach (var plate in allPlates)
if (plate.Equals(newPlate))
result = true;
return result;
}
}
}