use*_*248 1 c# winforms objectlistview
我在C#和.Net 4.0中使用ObjectListView。我编写了重新加载列表视图的代码,然后重新选择了最后选择的索引。
重新选择代码非常简单:
olvListView.SelectedIndex = i;
Run Code Online (Sandbox Code Playgroud)
这似乎起作用,因为已选中该项目。但是,如果我然后单击向上或向下箭头,则选择将跳至第二行(无论我选择了哪一行),这表明无论i的值是多少,选择实际上都是在第一行设置的。
我在这里做错了什么?
底层的ListView控件区分“选择”和“焦点”。
olvListView.SelectedIndex = i;更改选择但不更改焦点。但是焦点所在的行是键盘输入所涉及的行。
也可以改变焦点
olvListView.SelectedIndex = i;
olvListView.FocusedItem = olvListView.SelectedItems[0];
Run Code Online (Sandbox Code Playgroud)
或致电
olvListView.SelectObject(aModelObject);
Run Code Online (Sandbox Code Playgroud)
第二种解决方案是使用OLV时选择项目的首选方法,但是您说“写了重新加载listview的代码”,因此对原始项目的引用可能有所不同。也许您应该只刷新已更改的项目,而不是重新加载所有内容。这样,您可以保留选择。