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

如何在Visual C++ .NET中获取ListView选中项?CLR项目技术求助

解决ListView选中项切换后StaffId显示异常的问题

嘿,我一眼就发现你代码里的关键问题了——你获取staffId的时候,用的是listView1->Items[0],这意味着不管你选中哪一项,程序都会始终取列表里的第一项的第二列内容!这就是为啥第一次选中(刚好点的是第一项)功能正常,后续切换选中其他项时,staffId完全没变化的原因。

给你修正后的代码,不仅解决了这个问题,还加了防空判断让代码更健壮:

private: System::Void listView1_SelectedIndexChanged(System::Object^ sender, System::EventArgs^ e) { 
    // 先检查是否有选中项,避免空引用报错
    if (listView1->SelectedItems->Count > 0) {
        auto selectedItem = listView1->SelectedItems[0];
        lblStafffName->Text = selectedItem->Text; // 取选中项的第一列(staffName)
        lblStaffId->Text = selectedItem->SubItems[1]->Text; // 取选中项的第二列(staffId)
    } else {
        // 当没有选中项时,清空标签内容
        lblStafffName->Text = "";
        lblStaffId->Text = "";
    }
}

修正说明:

  • 统一使用SelectedItems[0]获取当前选中的项,确保每次都取到用户实际选中的那一行
  • 增加SelectedItems->Count > 0的判断,防止用户点击ListView空白处取消选中时,程序因为访问空对象而抛出异常

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 10:53:02