水平スクロール バーがリストビューに表示されないようにする方法はありますか? 必要に応じて垂直スクロール バーを表示したいが、水平スクロール バーは表示されないようにしたい。
私はそれがWndProcと関係があると思いますか?
ありがとう
水平スクロール バーがリストビューに表示されないようにする方法はありますか? 必要に応じて垂直スクロール バーを表示したいが、水平スクロール バーは表示されないようにしたい。
私はそれがWndProcと関係があると思いますか?
ありがとう
下部のスクロール バーをなくして垂直に表示する、もっと簡単な方法があります。ヘッダーを確認することで構成され、ヘッダーがない場合は行の幅でありlistview.Width - 4
、垂直スクロールバーが表示されている場合はlistview.Width - Scrollbar.Width - 4;
次のコードは、次の方法を示しています。
lv.Columns[0].Width = lv.Width - 4 - SystemInformation.VerticalScrollBarWidth;
現在受け入れられている回答は、スタックのバランスを崩すため、安全ではありません。DllImport の代わりに次のコードを使用する必要があります。
[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 は、もう一度調べた後、上記のコメントでこれをカバーしているので、ここではすべてうまくフォーマットされていると思います。
それを使用するには:
# Use one of these valued for hwnd
long SB_HORZ = 0;
long SB_VERT = 1;
long SB_BOTH = 3;
# Use the actual name of the ListView control in your code here
# Hides the specified ListView scroll bar
ShowScrollBar(listView1.Handle.ToInt64(), SB_BOTH, 0);
hideではなく強制的に表示するには、からに変更するだけです。bShow
0
1
0
false
1
true
このようなものを試すことができます。私はプロジェクトで一度使用しましたが、うまくいきました:
[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);
}
それが役に立てば幸い。
最善の解決策は、ここで与えられた受け入れられた答えです: How to hide the vertical scroll bar in a .NET ListView Control in Details mode
それは完全に機能し、列幅の調整などのトリックは必要ありません。さらに、コントロールを作成するときにスクロールバーを無効にします。
System.Windows.Forms.ListView
欠点は、オーバーライドするために派生する独自のリスト ビュー クラスを作成する必要があることですWndProc
。しかし、これは行く方法です。
水平スクロールバーを無効にするには、 (リンクされた回答で使用されていた)のWS_HSCROLL
代わりに使用することを忘れないでください。WS_VSCROLL
の値はWS_HSCROLL
です0x00100000
。