質問者
ListViewのスクロールバーを非表示にする方法

質問
-
こんにちは。
最近VC++Expressをつかって、Windows Form のプログラミングを体験しています。
ListViewコンポーネントについて質問なのですが、ListViewのスクロールバーを
非表示にする方法はありますか?Scrollableプロパティをfalseにすると、たしかに
スクロールバーが非表示になるのですが、キーボード操作による選択位置の
変更によるスクロールまでもが効かなくなってしまいます。
実現したいのは、
- スクロールバーを非表示にしたい
- キーボード入力などによってスクロールする処理は残しておきたい
です。ListViewのプロパティやハンドラの変更によってこれが可能であるか、
ご存知のかたがおられましたら、お聞かせください。
すべての返信
-
いとけんです。
こんなかんじで消せますよ。
あと、スクロールは API の ListView_Scroll で行ってください。
/// <summary>
/// ウインドウメッセージを受信する
/// </summary>
/// <param name="m">メッセージ</param>
protected override void WndProc(ref Message m)
{
switch (m.Msg)
{
case Win32Methods.WM_NCCALCSIZE:
{
//スクロールバーを強制非表示
int ws = Win32Methods.GetWindowLong(Handle, Win32Methods.GWL_STYLE);
ws &= Win32Methods.WS_VSCROLL | Win32Methods.WS_HSCROLL;
if (ws != 0)
{
Win32Methods.ShowScrollBar(Handle, Win32Methods.SB_BOTH, false);
}
return;
}
}
base.WndProc(ref m);
}