2017-01-11 30 views
0

マウスホイールを使用してwinformsアプリケーションのボタンを含むパネルの表示を動的に変更しようとしています。私は基本的に以下のコードを使用してパネルの位置を変更していますが、マウスホイールを使用してスクロールするたびにスクロールバーが表示されます。私は場所を変更すると、彼らはフラスコ/フリッカーの一種を見ることができます。スクロールバーの表示を停止する方法はありますか?スクロールバーなしでmousewheelを使用してスクロールする

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

答えて

0

windowsによって自動的に表示されているため、winformsから簡単に変更することはできません。同様の要件と私は使用していたこのissue.Iのためではないので、優れたソリューションがありましたこの:

[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方法上記の例に示す
+0

user32.dllをどのようにインポートしますか? –

+0

クラスにコードをコピーします – ViVi

+0

スクロールバーがまだ点滅します。コードが何かをしているように見えません。 –

関連する問題