【发布时间】:2014-06-16 17:45:19
【问题描述】:
在我的应用程序中,我出于多种目的使用了很多 ListView。我想禁用水平滚动条。我使用以下链接作为参考有效地完成了这一点 Disable Horizontal ScrollBar 1,Disable Horizontal ScrollBar 2。以下是我的代码:
首先我将 ListView 的 Scrollable 属性设置为 false
[DllImport("user32.dll")]
static public extern bool ShowScrollBar(System.IntPtr hWnd, int wBar, bool bShow);
private const uint SB_HORZ = 0; //Horrizontal Scroll
private const uint SB_VERT = 1; //Vertical Scroll
private const uint ESB_DISABLE_BOTH = 0x3;
private const uint ESB_ENABLE_BOTH = 0x0;
创建了一个方法,以便通过应用程序将其用于所有 ListView
public void HideHorizontalScrollBar(ListView lv,int value, bool isNeeded)
{
ShowScrollBar(lv.Handle, value, isNeeded);
}
现在在 MainForm 的构造函数中在 InitializeComponent() 之后引用了这个方法
private void ListViewHorrizontalScrollBar()
{
//0 for horrizontal
//1 for vertical
_ListViewScrollOperation.HideHorizontalScrollBar(this.lvAntSetExcludedFiles, 0, false);
_ListViewScrollOperation.HideHorizontalScrollBar(this.lvAntSetExcludedFiles, 1, true);
}
现在这个东西对我来说非常有用。但是我只是有一个小问题。即使只有 2 个值,垂直滚动条仍然可见。即使 ListView 中没有任何数据,Vertical ScrollBar 仍然是可见的。
此外,由于 ListView 的 Scrollable 属性设置为 false,因此我无法使用键盘的向上和向下箭头键从 Top-Bottom 或 Bottom-Top 导航。 那么我还能做些什么来解决这个问题吗?
任何帮助将不胜感激。
提前致谢
【问题讨论】:
-
看起来像XY problem。您是否尝试禁用水平滚动条,因为您将列标题设置得太长?
-
@Sinatr 我尝试多次更改列标题但仍然面临问题所以只有我在这里发布。
-
尝试使用auto-size列宽。
标签: c# winforms listview scrollable