【问题标题】:ObjectListView: select subitem programmaticallyObjectListView:以编程方式选择子项
【发布时间】:2011-11-10 17:34:21
【问题描述】:

如何以编程方式选择ObjectListView 的子项?

SelectObject()SelectItem() 仅适用于根项目,不适用于子项目。

【问题讨论】:

  • 你的 ObjectListView 链接不起作用。
  • 达里尔,为你的评论感到失望 - 我修好了。
  • 它有类似ObjectListView.Items[index].Select的东西吗??通常应该根据它们的索引或子项目对项目进行某种访问。看看它的方法。
  • Sean87,不,没有方法,就像你写的那样。 Threr 是问题,该树的 OLVListItem 的根项具有 S​​elect 属性,可以选择我的根项。但是每个 OLVListItem 的所有子项 - 它的 OLVListSubItem,并且 OLVListSubItem 没有 selected 属性或 select 方法。
  • 您确定您使用的ObjectListView 对象上可以有子项吗?例如,在我看来(从我在他们的屏幕截图中看到的)ListView 没有子节点。

标签: c# .net winforms objectlistview


【解决方案1】:

ObjectListView 中称为子项的东西实际上是列中显示的字符串和图像。

如果你真的想使用 ObjectListView 那么选择子项最直接的方法是

objectListView1.Items[index].SubItems[index] 

如果你使用 TreeListView 那么你应该使用你已经找到的方法。 虽然我建议在源中选择和更改。

【讨论】:

    【解决方案2】:

    我解决了这个问题。它对任何有类似问题的人都有用。为此,我需要通过下一个更改控制的源代码:

    TreeListView 类中TreeModel 属性的访问类型从protected 更改为public。在此之后,我可以访问 Branch 对象的 TreeListView 对象。例如,要选择根元素的任何子项,我编写下一个代码:

    var branch = tlvMain.TreeModel.GetBranch(tlvMain.SelectedObject);
    var children = branch.Children.Cast<SecurityObject>().ToList();
    tlvMain.SelectObject(children.SingleOrDefault(p=>p.Id == soft.Id));
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-07-09
      • 1970-01-01
      • 2015-10-31
      • 1970-01-01
      • 2014-03-02
      • 2017-12-11
      • 1970-01-01
      • 2011-10-07
      相关资源
      最近更新 更多