我有一個FlowLayoutPanel和AutoScroll = true 當滾動條可見時,我需要檢測滾動條上鼠標的移動。C#FlowLayoutPanel滾動條上沒有檢測到MouseMove事件
FlowLayoutPanel的MouseMove事件不捕獲有關滾動條的事件。
有沒有辦法鉤住滾動條的鼠標移動?
我有一個FlowLayoutPanel和AutoScroll = true 當滾動條可見時,我需要檢測滾動條上鼠標的移動。C#FlowLayoutPanel滾動條上沒有檢測到MouseMove事件
FlowLayoutPanel的MouseMove事件不捕獲有關滾動條的事件。
有沒有辦法鉤住滾動條的鼠標移動?
class MyFlowLayoutPanel : FlowLayoutPanel
{
const int WM_NCMOUSEMOVE = 0x00A0;
protected override void WndProc(ref Message m)
{
if(m.Msg == WM_NCMOUSEMOVE)
{
Console.WriteLine("MouseOverScrollbar");
}
base.WndProc(ref m);
}
}
我試過這個(在LINQPAD中),看起來像鼠標在滾動條上時MouseMoveEvent沒有引發。
void Main()
{
Application.Run(new Form2());
}
public class Form2:Form
{
public Form2()
{
Label lbl= new Label();
lbl.Location = new Point(200,40);
this.Controls.Add(lbl);
FlowLayoutPanel fl = new FlowLayoutPanel();fl.AutoScroll =true;
fl.MouseMove += (s,e) => { lbl.Text = e.Location.Y.ToString();};
this.MouseMove += (s,e) => { lbl.Text = e.Location.Y.ToString();};
for(int i=0;i<10;i++){fl.Controls.Add(new Button());}
this.Controls.Add(fl);
}
}
這些是ScrollBar.MouseMove事件,但其不能供我們直接使用。
等待,而我看看是否有任何wokaround
你能解釋一下爲什麼你需要在鼠標移過滾動條的反應? – 2011-03-02 12:07:23
以及他正在試圖做什麼..我只是意識到,滾動條既不在窗體區域也不在FormLayoutPanel的區域..或鼠標移動事件時沒有提出,當它..嗯。讓我看看我們能做些什麼 – 2011-03-02 12:12:36