我有一个 ListView 控件,我试图找出最简单/最好的方法来禁止更改选定的行,而不隐藏选定的行。
我知道有一个HideSelection
属性,但只有在ListView
仍然启用(但没有集中)时才有效。即使禁用了 ListView,我也需要可以查看选择。
我该如何实施?
您还可以使 ListView 所有者绘制。然后,您可以完全控制项目的外观,无论它们是否被选中,或者 ListView 本身是否启用。DrawListViewItemEventArgs 提供了一种要求 ListView 绘制项目的各个部分的方法,因此您只需绘制您感兴趣的位。例如,您可以绘制项目的背景,但将其留给 ListView 进行绘制文本。
有两个选项,更改所选行禁用的颜色。或者更改所有其他行以模拟它们被禁用,除了选定的行。第一个选项显然是最简单的,而第二个选项显然需要一些额外的保护。
我之前实际上已经完成了第一个选项,并且效果很好。您只需要记住将颜色更改回默认值,以防在此过程中稍后选择另一行。
实施 SelectedIndexChanged 并执行此操作
private void listViewABC_SelectedIndexChanged(object sender, EventArgs e)
{
listViewABC.SelectedItems.Clear();
}