在我的应用程序中,我使用大量的ListView用于许多目的。我想禁用Horizontal ScrollBar。我使用以下链接作为参考有效地完成了 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);
}
现在在MainizeComponent()
之后的MainForm的Contructor中引用了这个方法 private void ListViewHorrizontalScrollBar()
{
//0 for horrizontal
//1 for vertical
_ListViewScrollOperation.HideHorizontalScrollBar(this.lvAntSetExcludedFiles, 0, false);
_ListViewScrollOperation.HideHorizontalScrollBar(this.lvAntSetExcludedFiles, 1, true);
}
现在这件事对我很有用。但是我只是有一个小问题。即使只有2个值仍然可以看到Vertical ScrollBar。即使ListView中没有任何数据,Vertical ScrollBar仍然是可见的。
此外,由于ListView的Scrollable属性设置为false,因此无法使用键盘的向上和向下箭头键从上下或从下到上导航。 那么我还有什么办法可以解决这个问题吗?
任何帮助都会非常感激。
提前致谢
答案 0 :(得分:-1)
经过大量的谷歌搜索和Sinatr的一点提示后,我终于找到了解决方案。当然,正如评论所说我在XY Problem。所以这就是我所做的。
这是我在ListView
之后添加的额外代码行lv.Items.Clear();
foreach (string newval in stringlist)
lv.Items.Add(newval);
lv.Columns[0].AutoResize(ColumnHeaderAutoResizeStyle.None);
lv.Columns[0].Width = 'Your own size';
lv.Columns[0].AutoResize(ColumnHeaderAutoResizeStyle.ColumnContent);
我做了以下事情