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

PowerShell Forms中如何获取ListView选中项的列名及对应值

解决方案

无需修改你原有填充ListView的逻辑,利用ListView列集合与行内子项的索引一一对应特性,就能直接获取到对应列名,不需要提前填充SubItem的Name属性。

修改后的完整事件代码

$UIDlist.Add_SelectedIndexChanged({
    # 空值检查避免WinForms原生异常
    If($null -ne $this.SelectedItems -and $this.SelectedItems.Count -gt 0) {
        # 取当前选中的第一个条目,多选场景可遍历整个SelectedItems集合
        $selectedItem = $this.SelectedItems[0]
        # 计算最长列名长度,用于输出对齐
        $maxColNameLength = ($this.Columns | ForEach-Object { $_.Text.Length } | Measure-Object -Maximum).Maximum
        # 按索引匹配列名和子项值,拼接输出行
        $ClipText = for ($i = 0; $i -lt $selectedItem.SubItems.Count; $i++) {
            $colName = $this.Columns[$i].Text
            # 列名补空格到最大长度,保证格式整齐
            $paddedColName = $colName.PadRight($maxColNameLength, ' ')
            "$paddedColName $($selectedItem.SubItems[$i].Text)"
        }
        # 合并为带换行的字符串后复制到剪贴板
        $ClipText -join "`r`n" | Set-Clipboard
    }
})

逻辑说明

  • ListView的Columns集合存储了所有表头的名称,每一行的SubItems子项索引和Columns的索引完全对应:第N个子项就对应第N个列的列名
  • 代码内置了列名对齐逻辑,会自动匹配最长的列名补空格,输出格式和你要求的示例完全一致
  • 额外补充了选中项数量判断,避免选中状态为空时出现索引异常
  • 如果需要支持多选复制所有选中项的内容,在外层加一层遍历$this.SelectedItems的循环即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 15:06:03