ListView は Scroll イベントをサポートしていないようです。リストがスクロールされるたびに関数を呼び出す必要があります。どうすればそれについて行くでしょうか?
13746 次
2 に答える
6
リストがスクロールされたときに関数を呼び出す必要があるのはなぜですか?
スクロール中にアイテムを変更する場合は、リストビューを仮想に設定することをお勧めします。
または、リストビューをオーバーライドして次のようにすることもできます。
public class TestListView : System.Windows.Forms.ListView
{
private const int WM_HSCROLL = 0x114;
private const int WM_VSCROLL = 0x115;
public event EventHandler Scroll;
protected void OnScroll()
{
if (this.Scroll != null)
this.Scroll(this, EventArgs.Empty);
}
protected override void WndProc(ref System.Windows.Forms.Message m)
{
base.WndProc(ref m);
if (m.Msg == WM_HSCROLL || m.Msg == WM_VSCROLL)
this.OnScroll();
}
}
于 2008-12-17T19:50:50.283 に答える
4
最良のアプローチはブライアンのソリューションのようです。ただし、スクロールバーによって生成されたイベントにのみ応答し、マウスの中央ボタンからのイベントには応答しません。
条件を変更した場合:
if (m.Msg == WM_HSCROLL || m.Msg == WM_VSCROLL)
this.OnScroll();
に:
if (m.Msg == 0x000c2c9)
this.OnScroll();
リストビューのすべてのスクロールイベントで応答するようになりました。
于 2010-08-05T13:03:12.527 に答える