如何正确选择ObjectListView中的行?

时间:2015-06-02 01:06:51

标签: c# winforms objectlistview

我正在使用带有C#和.Net 4.0的ObjectListView。我编写的代码重新加载listview,然后重新选择最后选择的索引。

重选代码非常简单:

olvListView.SelectedIndex = i;

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

我在这里做错了什么?

2 个答案:

答案 0 :(得分:5)

基础ListView控件区分选择'并且'专注'。

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

也可以改变焦点

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

或致电

olvListView.SelectObject(aModelObject);

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

答案 1 :(得分:0)

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

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