【问题标题】:WinForms ListView SelectedIndices is empty after form is hidden表单隐藏后 WinForms ListView SelectedIndices 为空
【发布时间】:2012-02-21 20:30:29
【问题描述】:

我在 .NET 中的表单上有一个 ListView。

在隐藏表单之前,SelectedIncides 存在且有效:

void buttonOK_click()
{
    Assert(listView.SelectedIndices.Count > 0);
    DialogResult = DialogResult.OK;
}

但模态形式返回后:

form1.ShowDialog();
Assert(form1.listView.SelectedIndices.Count > 0); 

第二个断言失败。

一旦列表视图所在的表单被隐藏(尽管没有销毁/处置/释放),如何读取ListViewSelectedIndices

【问题讨论】:

  • SelectedIndices 集合不能因表单已关闭而更改。我建议您检查可能被触发并取消选择项目的其他事件。 ShowModal 你的意思是 ShowDialog - 显示一个模态对话框?
  • 另一位用户在选择索引时遇到问题。 (stackoverflow.com/questions/304844/…)

标签: .net winforms listview


【解决方案1】:

您可以尝试在 form1 上使用一个公共 var,其中包含所选索引的 List(或等效项)?让 form1 在表单关闭事件上设置它。一旦控制权传回您的原始表单,您就可以访问它了吗?

【讨论】:

  • 我没有做这个确切的解决方案,而是一个同样笨拙的黑客让它工作。
  • 几个月前我不得不解决这个确切的问题,可惜我们都没有找到更好的方法!
【解决方案2】:

您可以尝试免费软件组件 Better ListView Express 或完整的 Better ListView。我们已经解决了这里的 SelectedIndices 问题,以及常规 .NET ListView 的其他十几个已知错误。

【讨论】:

  • 或 ObjectListView,或其他 3rd 方控件。
  • 好吧,ObjectListView 是一个 .NET ListView 包装器 - 因此它继承了它的一些缺陷,并且它的对象模型还有很大的不同(你必须重新学习),尽管我相信它是一个优秀的控制。其他第 3 方控件也可能与原始 ListView 界面有所不同。但事实上,这些都是修复 SelectedIndices 问题的可能替代方案。
猜你喜欢
  • 2010-10-05
  • 1970-01-01
  • 1970-01-01
  • 2017-03-31
  • 1970-01-01
  • 2011-01-29
  • 1970-01-01
  • 1970-01-01
  • 2011-02-26
相关资源
最近更新 更多