c#使用无滚动条的鼠标滚轮滚动

c#使用无滚动条的鼠标滚轮滚动,c#,winforms,visual-studio,scrollbar,C#,Winforms,Visual Studio,Scrollbar,我正在尝试使用鼠标滚轮动态更改winforms应用程序中包含按钮的面板的视图。我基本上是使用下面的代码更改面板的位置,但是每当我使用鼠标滚轮滚动时,都可以看到滚动条。当我改变位置时,它们有点闪烁。有没有办法阻止滚动条出现 location -= 40; this.pnl.VerticalScroll.Value = location; this.pnl.AutoScrollPosition = new Point(0, location); 您不能从winforms简单地更改它,因为它是由wi

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

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

您不能从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);
}
  • 导入win32 dll
    user32.dll
  • 使用上面的示例中所示的必需参数调用其中的ShowScrollBar方法

  • 如何导入user32.dll?滚动条仍然闪烁。看起来代码什么都没做。