我有一个 ListView 控件,我试图找出禁止更改所选行的最简单/最好的方法,而不需要 隐藏 选定的行。

我知道有一个 HideSelection 属性,但这仅在以下情况下才有效 ListView 仍然启用(但没有聚焦)。即使 ListView 被禁用,我也需要使选择内容可见。

我怎样才能实现这个?

有帮助吗?

解决方案

您还可以使 ListView 所有者绘制。然后,您可以完全控制项目的外观,无论它们是否被选中,或者 ListView 本身是否启用。DrawListViewItemEventArgs 提供了一种方法来要求 ListView 绘制项目的各个部分,因此您只需绘制您感兴趣的部分。例如,您可以绘制项目的背景,但将其留给 ListView 来绘制文本。

其他提示

有两个选项,更改所选行禁用的颜色。或者更改所有其他行以模拟除所选行之外的所有行均被禁用。第一个选项显然是最简单的,第二个选项显然需要一些额外的保护。

实际上我之前已经做过第一个选项并且效果很好。您只需记住将颜色更改回默认值,以防稍后在此过程中选择另一行。

实现 SelectedIndexChanged 并执行此操作

    private void listViewABC_SelectedIndexChanged(object sender, EventArgs e)
    {
        listViewABC.SelectedItems.Clear();
    }
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top