C# ListView Horizontale Bildlaufleiste deaktivieren

C# ListView Horizontale Bildlaufleiste deaktivieren

Es gibt eine viel einfachere Möglichkeit, die untere Bildlaufleiste zu eliminieren und die vertikale Anzeige zu erhalten. Es besteht darin sicherzustellen, dass der Header und wenn kein Header die Zeilen die Breite von listview.Width - 4 haben und wenn die vertikale Bildlaufleiste angezeigt wird, dann listview.Width - Scrollbar.Width - 4;

Der folgende Code demonstriert die Vorgehensweise:

lv.Columns[0].Width = lv.Width - 4 - SystemInformation.VerticalScrollBarWidth;

Die Antwort von @bennyyboi ist unsicher, da sie den Stapel aus dem Gleichgewicht bringt. Sie sollten stattdessen den folgenden Code für den DllImport verwenden:

[System.Runtime.InteropServices.DllImport("user32", CallingConvention=System.Runtime.InteropServices.CallingConvention.Winapi)]
[return: System.Runtime.InteropServices.MarshalAs(System.Runtime.InteropServices.UnmanagedType.Bool)]

private static extern bool ShowScrollBar(IntPtr hwnd, int wBar, [System.Runtime.InteropServices.MarshalAs(System.Runtime.InteropServices.UnmanagedType.Bool)] bool bShow);

Andreas Reiff behandelt dies in seinem Kommentar oben, nachdem er noch einmal nachgesehen hat, also denke ich, dass hier alles schön formatiert ist.


Sie könnten so etwas versuchen, ich habe es einmal in einem Projekt verwendet und es hat funktioniert:

[DllImport ("user32")]
private static extern long ShowScrollBar (long hwnd , long wBar, long bShow);
long SB_HORZ = 0;
long SB_VERT = 1;
long SB_BOTH = 3;

private void HideHorizontalScrollBar ()
{
    ShowScrollBar(listView1.Handle.ToInt64(), SB_HORZ, 0);
}

Hoffe es hilft.