在c#中启用禁用列表视图的滚动条

本文关键字:列表 视图 滚动条 启用 | 更新日期: 2023-09-27 18:16:49

我有点糊涂了。I'm set:

this.listView1.Enabled = false;

当我做listview的滚动条也被禁用。我想看到所有的listviewitems在listview滚动条禁用时。请给我一些建议。谢谢。

在c#中启用禁用列表视图的滚动条

在很多评论之后,我假设你的listview,因为经常从许多不同的线程更新,是闪烁的。
如果是这样,一个可能的解决方案是启用DoubleBuffering;这个属性是protected,所以只能从子类访问。
所以你可以:

  1. 添加一个新类到您的项目,并粘贴如下所示的代码
  2. 将新控件从工具箱顶部拖放到窗体上,替换旧控件

这可以解决你的问题。

using System;
using System.Windows.Forms;
class BufferedListView : ListView 
{
    public BufferedListView() 
    {
        this.DoubleBuffered = true;
    }
}

这个想法来自于SO.

你不能滚动一个禁用的控件,因为滚动条是控件本身的一部分(它是禁用的,所以…)。

如果你想滚动,但不允许用户选择任何东西,你可以这样做

this.listBox1.SelectionMode = SelectionMode.None;

如果你想恢复它,你可以将它设置为SelectionMode。一个用于单个选择,或用于多个选择的其他选项之一。

另一个选项是让用户绘制ListBox

你不能滚动一个被禁用的控件-但是如果你真的需要这样的功能,开发一个用户控件。

在c#中开发自定义控件

隐藏CheckListbox中的滚动条

一步步编写自定义控件

也许如果你把listview放在Panel中,你可以通过在Panel控件上设置ScrollBars="Auto"来启用滚动