C#开发也有段时间了,今天在listview上遇到一个问题:
当我们需要选定listview中的某项时我们一般会使用:
//要选定项的序号
int index = 5;
listView1.Items[index].Selected = true;
listView1.Select();
但如果用户将要在界面上使用上下键时,就会出现bug:虽然高亮显示确实是第六行(索引从0 开始),但按下键时光标将回到第二行,第三行,第四行…而非第七行,第八行,第九行…
出现问题的原因是listview界面中使用上下键选定的是焦点。当listview获得焦点时,listview.Item[0],也就是第一项将自动获得焦点,这时按下键将会导致listview.item[1]获得焦点,也就是上文所提到的从第六行跳回第二行。
解决方法:
int index = 5;
listView1.Items[index].Selected = true;
listView1.Items[index].Focused = true;
listView1.Select();