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

C# Winforms实现InputBox输入内容搜索ListBox项并高亮匹配结果

C# WinForm ListBox 关键词搜索高亮实现代码

以下是你需要的遍历匹配核心逻辑,直接替换你按钮点击事件中对应部分即可,默认你已经通过InputBox拿到用户输入的关键词,存在searchKeyword变量中:

// 先清空之前的选中状态,避免旧选中项干扰
listBox1.ClearSelected();
bool hasMatched = false;

// 遍历ListBox所有条目
for (int i = 0; i < listBox1.Items.Count; i++)
{
    // 获取当前条目的显示文本,如果你给ListBox绑定了自定义数据源,这里对应改属性取值逻辑即可
    string itemContent = listBox1.GetItemText(listBox1.Items[i]);

    // 此处是模糊匹配(包含关键词就命中),需要完全匹配的话改成 itemContent.Equals(searchKeyword, StringComparison.OrdinalIgnoreCase)
    if (itemContent.Contains(searchKeyword, StringComparison.OrdinalIgnoreCase))
    {
        // 高亮选中当前匹配条目
        listBox1.SetSelected(i, true);
        hasMatched = true;
        // 只需要匹配第一个结果就保留这行break,需要匹配所有符合的条目就删掉break
        break;
    }
}

// 无匹配结果时弹出提示,你可以直接复用自己已有的MessageBox逻辑
if (!hasMatched)
{
    MessageBox.Show("搜索的词条不存在", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
}

可选调整说明

  • 如果你的ListBox开启了多选模式,删掉代码中的break,即可同时高亮所有符合关键词的条目
  • StringComparison.OrdinalIgnoreCase是忽略大小写匹配,需要严格区分大小写的话删除这个参数即可
  • 需要匹配到结果后自动滚动到对应条目位置的话,在SetSelected代码后添加一行listBox1.TopIndex = i;即可
  • 如果ListBox绑定的是自定义对象数据源,把listBox1.GetItemText(listBox1.Items[i])替换为对应对象的属性取值,比如绑定的是List<自定义类>,就改成(listBox1.Items[i] as 自定义类).你要匹配的属性名

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 21:36:00