我有一個面板,其AutoScroll = true;
鼠標滾輪滾動水平
餘可使用滾動條滾動面板。
我也寫找到滾輪「垂直滾動」和「鼠標」滾輪:
void panelInner_MouseWheel(object sender, System.Windows.Forms.MouseEventArgs e)
{
panelInner.Focus();
}
不過,我想用「隨心所欲鼠標+轉移」太水平滾動。
我需要做什麼才能發生?
我有一個面板,其AutoScroll = true;
鼠標滾輪滾動水平
餘可使用滾動條滾動面板。
我也寫找到滾輪「垂直滾動」和「鼠標」滾輪:
void panelInner_MouseWheel(object sender, System.Windows.Forms.MouseEventArgs e)
{
panelInner.Focus();
}
不過,我想用「隨心所欲鼠標+轉移」太水平滾動。
我需要做什麼才能發生?
在您的設計器文件中,您需要手動添加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);
}
}
參考文獻:
[移+鼠標滾輪水平滾動](的我在論壇上看到了這個答案,但我無法理解它:S你能解釋一下嗎? –
此條目「[DllImport(」user32.dll「,CharSet = CharSet.Auto)]」將放置在哪裏?還有richTextBox?我們爲什麼用它 ? –
我問,因爲當我寫這個:[DllImport(「user32.dll」,CharSet = CharSet.Auto)]此條目不編譯 –
可能重複http://stackoverflow.com/questions/7828121/shift -mouse-wheel-horizontal-scroll) –