2009-07-27 83 views
6

首先,mousewheel事件未列入Visual Studio 2008的事件窗格中,這非常煩人。無法在C#窗體中觸發MouseWheel事件

我找到了正確的格式在網上雖然,寫進我的代碼如下:

private void Form1_MouseWheel(object sender, MouseEventArgs e) 
    { 
     Debug.WriteLine("Foo"); 
    } 

...我從中沒有得到響應時,鼠標滾輪旋轉。

我在我的代碼的主要類區域中這樣做,並且設計器只包含一個窗體/窗口/無論如何鼠標不失焦點。

namespace BlahBlah 
{ 
    public partial class Form1 : Form 
    { 

而相比之下,我有這個方法正確的鼠標滾輪一個在上面,它工作得很好:

private void Form1_MouseClick(object sender, MouseEventArgs e) 
    { 
     Debug.WriteLine("Foo"); 
    } 

如果我猜的話,我想我沒有正確鏈接代碼到表單(又名:如果我通過設計器的事件面板添加此事件,Visual Studio將爲我做的所有事情)。但是我可能錯了,或者只是在犯一些愚蠢的錯誤。

當鼠標滾輪旋轉時,您能否幫助我獲得任何迴應?謝謝!

回答

11

需要設置mousewheel事件。

這個添加到Form1的構造函數(後InitalizeComponents();)

this.MouseWheel+= new MouseEventHandler(Form1_MouseWheel); 
+0

就是這樣,非常感謝! Sidequestion:我也有一個用於我的MouseMove方法(this.MouseMove + = Form1_MouseMove;),但不適用於MouseClick。爲什麼不需要它? – cksubs 2009-07-27 19:43:57

+1

那麼......它響應鼠標點擊?如果它不需要對鼠標點擊作出反應,則不需要它。一些控件自動鏈接了鼠標點擊事件(對於滾動和什麼的)。這取決於你想要完成的事情。 – Kurisu 2009-07-27 19:46:45

+0

我只是說我的MouseClick方法在構造函數中不需要「.... + = ....」的東西(在鼠標點擊時觸發)。這就是爲什麼我忘記了爲MouseWheel添加類似的東西,MouseClick工作得很好。 – cksubs 2009-07-27 19:52:41

1

我不知道如何訂閱該特定事件,但是您可以重寫表單上的相應方法,而不是。

6

我沒有足夠的聲譽與評論作出迴應,但答案你身邊的問題是,代表們確實需要被設置。但是,當通過在屬性窗格中雙擊創建一個代碼時,代碼會自動生成並放入InitializeComponent方法的* .designer.cs文件中。

1

在這種情況下,最好重寫OnMouseWheel成員函數而不是註冊到事件。例如:

public class MyFrm : Form 
{ 
    protected override void OnMouseWheel(MouseEventArgs e) 
    { 
     /*Handle the mouse wheel here*/ 
     base.OnMouseWheel(e); 
    } 
}