10

水平スクロール バーがリストビューに表示されないようにする方法はありますか? 必要に応じて垂直スクロール バーを表示したいが、水平スクロール バーは表示されないようにしたい。

私はそれがWndProcと関係があると思いますか?

ありがとう

4

4 に答える 4

8

下部のスクロール バーをなくして垂直に表示する、もっと簡単な方法があります。ヘッダーを確認することで構成され、ヘッダーがない場合は行の幅でありlistview.Width - 4、垂直スクロールバーが表示されている場合はlistview.Width - Scrollbar.Width - 4;

次のコードは、次の方法を示しています。

lv.Columns[0].Width = lv.Width - 4 - SystemInformation.VerticalScrollBarWidth;
于 2015-05-04T20:22:45.057 に答える
5

現在受け入れられている回答は、スタックのバランスを崩すため、安全ではありません。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ではなく強制的に表示するには、からに変更するだけです。bShow010false1true

于 2013-01-31T22:55:58.710 に答える
4

このようなものを試すことができます。私はプロジェクトで一度使用しましたが、うまくいきました:

[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);
}

それが役に立てば幸い。

于 2010-12-17T02:16:54.967 に答える
3

最善の解決策は、ここで与えられた受け入れられた答えです: 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

于 2016-10-19T14:23:14.697 に答える