如何检查 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;
        }
    }
}