c#使用鼠标滚轮滚动而不使用滚动条

时间:2017-01-11 03:50:12

标签: c# winforms visual-studio scrollbar

我正在尝试使用鼠标滚轮动态更改包含winforms应用程序中按钮的面板的视图。我基本上是使用下面的代码更改面板的位置,但每当我使用鼠标滚轮滚动时,都可以看到滚动条。当我改变位置时,它们会将烧瓶/闪烁分类到视图中。有没有办法阻止滚动条出现?

location -= 40;
this.pnl.VerticalScroll.Value = location;
this.pnl.AutoScrollPosition = new Point(0, location);

1 个答案:

答案 0 :(得分:0)

你不能简单地从winforms改变它,因为它是由windows自动显示的。对于这个问题,有一个不那么好的解决方案。我有类似的要求,我用的是这个:

[DllImport("user32.dll")]
[return: MarshalAs(UnmanagedType.Bool)]
private static extern bool ShowScrollBar(IntPtr hWnd, int wBar, bool bShow);

private enum ScrollBarDirection
{
    SB_HORZ = 0,
    SB_VERT = 1,
    SB_CTL = 2,
    SB_BOTH = 3
}

protected override void WndProc(ref System.Windows.Forms.Message m)
{
    ShowScrollBar(panel1.Handle, (int)ScrollBarDirection.SB_VERT, false);
    base.WndProc(ref m);
}
  1. 导入win32 dll user32.dll
  2. 使用所需参数调用其中的ShowScrollBar方法,如上例
  3. 所示