【问题标题】:Disabling a ListView in C#, but still showing the current selection在 C# 中禁用 ListView,但仍显示当前选择
【发布时间】:2010-09-06 01:19:16
【问题描述】:

我有一个 ListView 控件,我正在尝试找出最简单/最好的方法来禁止更改选定的行,而不隐藏选定的行。 p>

我知道有一个 HideSelection 属性,但这仅在 ListView 仍处于启用状态(但未聚焦)时才有效。即使 ListView 被禁用,我也需要可以查看选择。

我该如何实现?

【问题讨论】:

    标签: c# .net winforms listview


    【解决方案1】:

    实现 SelectedIndexChanged 并执行此操作

        private void listViewABC_SelectedIndexChanged(object sender, EventArgs e)
        {
            listViewABC.SelectedItems.Clear();
        }
    

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

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

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2013-06-06
          • 1970-01-01
          • 2017-05-28
          • 1970-01-01
          • 2014-11-06
          • 1970-01-01
          • 1970-01-01
          • 2023-01-24
          相关资源
          最近更新 更多