You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何检查ListBox中是否存在与另一ListBox匹配的文本项

现有代码问题说明

你当前编写的逻辑仅比对了入场文本框与离场文本框的输入值,没有校验第一个入场牌照ListBox中的全量已存储条目,因此不符合业务需求。

正确实现代码

首先确认存储已入场牌照的ListBox控件名为listBoxEntrance,可直接使用如下逻辑实现校验:

// 读取并格式化待离场牌照输入,去除前后空格避免输入误差
string exitPlate = textBoxExit.Text.Trim();

// 空输入校验
if (string.IsNullOrWhiteSpace(exitPlate))
{
    MessageBox.Show("请输入需要登记离场的车辆牌照号");
    return;
}

// 校验入场ListBox中是否存在对应牌照(使用LINQ写法,需提前引入using System.Linq;)
bool hasEntranceRecord = listBoxEntrance.Items.Cast<string>().Any(plate => plate.Trim() == exitPlate);

if (hasEntranceRecord)
{
    // 存在入场记录,添加到离场ListBox
    listBoxExit.Items.Add($"Plate: {exitPlate} Exited");
    // 可选逻辑:登记离场后自动移除入场记录,避免同一牌照重复离场
    listBoxEntrance.Items.Remove(exitPlate);
    // 清空输入框
    textBoxExit.Clear();
}
else
{
    // 无入场记录,弹出错误提示
    MessageBox.Show($"校验失败:牌照 {exitPlate} 无入场记录,无法登记离场", "操作错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
}

如果项目未引入LINQ,可使用传统遍历方式实现校验:

bool hasEntranceRecord = false;
foreach (var item in listBoxEntrance.Items)
{
    if (item.ToString().Trim() == exitPlate)
    {
        hasEntranceRecord = true;
        break;
    }
}
注意事项
  • 如果入场ListBox的存储条目不是纯牌照号(例如也带有Plate:前缀),需要先提取条目中的牌照字段再做比对
  • 如需支持大小写不敏感的牌照校验,可将比对逻辑替换为Equals(plate.Trim(), exitPlate, StringComparison.OrdinalIgnoreCase)
  • 可根据业务需要决定是否在登记离场后删除入场ListBox的对应记录

内容的提问来源于stack exchange,提问作者PerkZz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 19:24:08