2

私はそのパネルを持っていますAutoScroll = true;

スクロールバーを使用してパネルをスクロールできます。

また、次のように書くことで、「マウス」ホイール付きのマウスホイール「垂直スクロール」を見つけます。

void panelInner_MouseWheel(object sender, System.Windows.Forms.MouseEventArgs e)
{
    panelInner.Focus();
}

でも、「マウスを回してシフト」して横にスクロールしたいです。

それを実現するにはどうすればよいですか?

4

1 に答える 1

2

Designerファイルで、MouseWheelイベントデリゲートを手動で追加する必要があります。

this.panelInner.MouseWheel += new System.Windows.Forms.MouseEventHandler(this.panelInner_MouseWheel);

次に、コードビハインドに以下を追加できます。

    private const int WM_SCROLL = 276; // Horizontal scroll 
    private const int SB_LINELEFT = 0; // Scrolls one cell left 
    private const int SB_LINERIGHT = 1; // Scrolls one line right

    [DllImport("user32.dll", CharSet = CharSet.Auto)]
    private static extern int SendMessage(IntPtr hWnd, int wMsg, IntPtr wParam, IntPtr lParam); 

    private void panelInner_MouseWheel(object sender, MouseEventArgs e)
    {
        if (ModifierKeys == Keys.Shift)
        {
            var direction = e.Delta > 0 ? SB_LINELEFT : SB_LINERIGHT;

            SendMessage(this.panelInner.Handle, WM_SCROLL, (IntPtr)direction, IntPtr.Zero);
        }
    }

参照:

  1. Shift+マウスホイールの水平スクロール
  2. C#でのマウスチルトホイールの水平スクロール
于 2012-10-23T16:19:30.097 に答える