ga('set', 'anonymizeIp', 1);
視窗程式設計中,有時候會創建許多panel來容納資料,當資料太多時會使用到scroll bar,但panel是不支援滑鼠滾輪事件的。
本文演示如何讓panel也能支援滑鼠滾輪事件。
首先你的Panel的AutoScroll屬性必須要設為True。
實作以下步驟:
using System;
using System.Drawing;
using System.Runtime.InteropServices;
using System.Windows.Forms;
Form class中繼承&添加的程式碼如下:
namespace yournamespace
{
public partial class Form1:Form, IMessageFilter
{
[DllImport("user32.dll"]
private static extern IntPtr WindowFromPoint(Point pt);
[DllImport("user32.dll"]
private static extern IntPtr SendMessage(IntPtr hWnd, int msg, IntPtr wp, IntPtr lp);
}
public Form1()
{
InitializeComponent();
Application.AddMessageFilter(this);
}
public bool PreFilterMessage(ref Message e)
{
if (m.Msg == 0x20a)
{
Point pos = new Point(m.LParam.ToInt32() & 0xffff, m.LParam.ToInt32() >> 16);
IntPtr hWnd = WindowFromPoint(pos);
if (hWnd != IntPtr.Zero && hWnd != m.HWnd && Control.FromHandle(hWnd) != null)
{
SendMessage(hWnd, m.Msg, m.WParam, m.LParam);
return true;
}
}
return false;
}
}
如此一來,只要有AutoScroll屬性為True的控件,都會有效。