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