我如何正确地选择一行在ObjectListView

本文关键字:一行 ObjectListView 正确地 选择 | 更新日期: 2023-09-27 17:52:38

我使用ObjectListView与c#和。net 4.0。我编写了代码,重新加载listview,然后重新选择最后选择的索引。

重新选择代码非常简单:

olvListView.SelectedIndex = i;

似乎可以工作,因为项被选中了。但是,如果然后单击向上或向下箭头,则选择将跳到第二行(无论我选择的是哪一行),这表明选择实际上是在第一行设置的,无论I的值是多少。

我在这里做错了什么?

我如何正确地选择一行在ObjectListView

底层ListView Control区分了'selection'和'focus'。

olvListView.SelectedIndex = i;改变了选择,但没有改变焦点。但是被聚焦的行是与键盘输入相关的行。

也可以改变焦点

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

或call

olvListView.SelectObject(aModelObject);

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

示例,如果您的olv有来自"class_z.list"

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