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

Powershell WinForms:如何让ComboBox实现DataGridView模糊搜索?

解决DataGridView部分关键词搜索问题

问题核心在于你用了$ComboBox1.SelectedItem获取输入内容——这个属性只会返回下拉列表中已选中的完整选项,当你输入部分关键词且没有对应的下拉项时,它根本拿不到你输入的文本,自然没法匹配。另外,当前的匹配逻辑也没做部分匹配处理,下面是修正后的代码:

# 搜索按钮
$Button1.Add_Click(
{
    # 获取用户输入的文本(去掉首尾空格)
    $searchKeyword = $ComboBox1.Text.Trim()

    # 如果输入为空,显示所有行
    if ([string]::IsNullOrEmpty($searchKeyword)) {
        foreach ($Row in $dataGridView1.Rows) {
            $DataGridView1.Rows[$row.Index].Visible = $true
        }
        return
    }

    # 遍历行,匹配包含关键词的内容
    foreach ($Row in $dataGridView1.Rows) {
        # 用-like做通配符匹配,*代表任意字符
        if ($Row.Cells[0].Value.ToString() -like "*$searchKeyword*") {
            $DataGridView1.Rows[$row.Index].Visible = $true
        }
        else {
            $DataGridView1.Rows[$row.Index].Visible = $false
        }
    }
})

关键修改点:

  • 改用$ComboBox1.Text获取用户输入的实际内容,而非依赖选中的下拉项
  • 增加空输入判断,避免无输入时全部隐藏行
  • 使用-like "*关键词*"实现包含式匹配,只要单元格内容里有输入的关键词就会匹配
  • 用.Trim()去掉输入的首尾空格,避免误判

如果想保留正则匹配(支持更复杂的搜索规则),可以用[regex]::Escape($searchKeyword)转义特殊字符后再用-match:

$escapedKeyword = [regex]::Escape($searchKeyword)
if ($Row.Cells[0].Value.ToString() -match $escapedKeyword) {
    # ...匹配逻辑...
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 08:22:22