【问题标题】:How do I properly select a row in ObjectListView?如何在 ObjectListView 中正确选择一行?
【发布时间】:2015-06-02 01:06:51
【问题描述】:

我在 C# 和 .Net 4.0 中使用 ObjectListView。我编写了重新加载列表视图然后重新选择最后选择的索引的代码。

重选代码很简单:

olvListView.SelectedIndex = i;

这似乎有效,因为该项目已被选中。但是,如果我然后单击向上或向下箭头,则选择会跳到第二行(无论我选择了哪一行),这表明选择实际上是在第一行设置的,无论 i 的值是多少。

我在这里做错了什么?

【问题讨论】:

    标签: c# winforms objectlistview


    【解决方案1】:

    底层 ListView 控件区分“选择”和“焦点”。

    olvListView.SelectedIndex = i; 更改选择但不更改焦点。但焦点行是键盘输入相关的行。

    要么改变焦点

    olvListView.SelectedIndex = i;
    olvListView.FocusedItem = olvListView.SelectedItems[0];
    

    或致电

    olvListView.SelectObject(aModelObject);
    

    第二种解决方案是在使用 OLV 时选择项目的首选方式,但是您说您“编写了重新加载列表视图的代码”,因此对原始项目的引用可能不同。也许您应该只刷新更改的项目,而不是重新加载所有内容。这样您就可以保留选择。

    【讨论】:

      【解决方案2】:

      例如,如果您的 olv 具有来自“class_z.list”的数据源并且 foreach 只有一个结果。

          foreach(class_z a in class_z.list.Where(x=>x.id==id_value))
                  {
                      olv.SelectedObject = z;
                  }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-11-18
        相关资源
        最近更新 更多