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