在C#中禁用ListView,但仍显示当前选择
时间:2020-03-05 18:40:13 来源:igfitidea点击:
我有一个ListView控件,并且我试图找出最简单/最好的方法来禁止更改选定的行,而不隐藏选定的行。
我知道有一个" HideSelection"属性,但这仅在仍启用" ListView"(但未聚焦)时起作用。我需要选择即使在禁用ListView的情况下也必须可见。
我该如何实施?
解决方案
回答
有两个选项,更改所选行的禁用颜色。或者更改所有其他行以模拟除选定行以外的所有其他行。第一种选择显然是最简单的,而第二种选择显然将需要一些额外的保护。
实际上,我之前已经做过第一个选择,并且效果很好。我们只需要记住将颜色更改回默认值,以防稍后在过程中选择另一行。
回答
我们还可以使ListView ownerdraw。然后,我们可以完全控制项目的外观,无论它们是否被选中,或者ListView本身是否已启用。 DrawListViewItemEventArgs提供了一种方法,要求ListView绘制项目的各个部分,因此我们只需要绘制感兴趣的位。例如,我们可以绘制项目的背景,但将其留在ListView上进行绘制文本。
回答
实现SelectedIndexChanged并执行此操作
private void listViewABC_SelectedIndexChanged(object sender, EventArgs e) { listViewABC.SelectedItems.Clear(); }