2017-11-06 13 views
0

私のC#Windows Formsアプリケーションでは、System.Windows.Forms.TabPageのフォームに複数のSystem.Windows.Forms.ListViewが含まれています。 TabPageには垂直スクロールバーがあります。C#ListViewスクロールを親コンテナに渡す方法

このTabPageをスクロールしているうちに、マウスがListViewの1つにカーソルを合わせると、スクロールが停止します。

この問題を解決し、マウスがListViewの1つをホバリングしているときにスクロールを続行するには、どのような方法が最適でしょうか?

答えて

0

ビットを検索した後、これは私の解決策だったが:

私は次のコードで新しいコントロールを作成:マウスホイールは、このコントロールで使用される場合

using System; 
using System.Windows.Forms; 

namespace MyApplication.Controls 
{ 
    public class ScrollableListView : ListView 
    { 
     [System.Runtime.InteropServices.DllImport("User32.dll")] 
     public static extern IntPtr PostMessage(IntPtr hWnd, int msg, IntPtr wParam, IntPtr lParam); 

     protected override void WndProc(ref Message m) 
     { 
      const int WM_MOUSEWHEEL = 0x020A; 
      switch (m.Msg) 
      { 
       case WM_MOUSEWHEEL: 
        if (m.HWnd == Handle) 
        { 
         if (Parent is TabPage) 
          PostMessage((Parent as TabPage).Handle, m.Msg, m.WParam, m.LParam); 
        } 
        break; 
       default: 
        base.WndProc(ref m); 
        break; 
      } 
     } 
    } 
} 

、イベントが送信されます親コントロールがSystem.Windows.Forms.TabPageの場合、親コントロールに送信します。

関連する問題