在C#中从禁用列表视图启用滚动条

时间:2011-12-06 07:11:03

标签: c# winforms listview scroll

我感到困惑。我订了:

this.listView1.Enabled = false;

当我这样做时,listview的滚动条也被禁用了。我想在列表视图禁用时使用滚动条在列表视图中查看所有listviewitems。请给我一些建议。谢谢。

4 个答案:

答案 0 :(得分:2)

您无法滚动已禁用的控件,因为滚动条是控件本身的一部分(并且已禁用,因此......)。

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

this.listBox1.SelectionMode = SelectionMode.None;

如果你想还原它,你可以将它设置为SelectionMode.One用于单个,或者用于多个选择余量的其他选项之一。

另一个(imho overcomplicated)选项正在使用户绘制ListBox。

答案 1 :(得分:2)

经过大量评论后,我假设您的列表视图,因为经常从许多不同的线程更新,闪烁。
如果是这样,一种可能的解决方案是启用DoubleBuffering;无论如何,这个属性protected只能从后代类中访问 所以你可以:

  1. 向项目中添加新类并粘贴下面显示的代码
  2. 编译
  3. 从工具箱顶部将新控件拖放到表单上,替换旧的控件
  4. 这可以解决您的问题。

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

    这个想法取自this post SO。

答案 2 :(得分:1)

您无法滚动已禁用的控件 - 但如果您确实需要此类功能,请开发用户控件。

Developing Custom Controls in C#

Hiding the scroll bar in CheckListbox

Writing your custom control step by step

答案 3 :(得分:0)

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