2017-01-11 7 views
0

Ich versuche, die Ansicht eines Panels, das Schaltflächen in meiner winforms-Anwendung enthält, dynamisch mit dem Mausrad zu ändern. Ich ändere grundsätzlich die Position des Panels mit dem unten stehenden Code, aber wann immer ich das Mausrad zum scrollen verwende, können die Scrollbalken gesehen werden. Wenn ich den Standort ändere, sieht man eine Art Flasche/Flicker. Gibt es eine Möglichkeit, die Bildlaufleisten nicht mehr erscheinen zu lassen?C# Scrollen mit dem Mausrad ohne Bildlaufleiste

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

Antwort

0

Sie können es nicht einfach von winforms ändern, da es automatisch von Windows angezeigt wird. Es ist eine nicht so große Lösung für dieses issue.I hatte eine ähnliche Anforderung und was ich früher war:

[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. Import der win32 dll user32.dll
  2. Rufen Sie die ShowScrollBar Methode darin mit den erforderlichen Parametern wie Wie im obigen Beispiel gezeigt
+0

Wie importieren Sie user32.dll? –

+0

Kopieren Sie den Code in Ihre Klasse – ViVi

+0

Die Bildlaufleiste blinkt weiterhin. Sieht nicht so aus, als würde der Code irgendetwas tun. –

Verwandte Themen