簡體   English   中英

如何在面板上捕獲鼠標滾輪?

[英]How to capture mouse wheel on panel?

如何在C#中捕獲面板上的鼠標滾輪? 我正在使用 WinForms

編輯:

我現在嘗試在PictureBox上執行此操作。

我的代碼:

this.pictureBox1.MouseClick += new System.Windows.Forms.MouseEventHandler(this.pictureBox1_MouseClick);    
this.pictureBox1.MouseWheel += new System.Windows.Forms.MouseEventHandler(this.pictureBox1_MouseClick);
private void pictureBox1_MouseClick(object sender, MouseEventArgs e)  
  {  
    MessageBox.Show("Click");  
  }

點擊作品。 惠靈沒有。 為什么?

如果在組件上看不到“MouseWheel”事件,則需要手動創建它。 此外,我們需要關注該組件,否則“MouseWheel”事件將不適用於該組件。 我將向您展示如何為“pictureBox1”創建一個“MouseWheel”事件以及它是如何工作的。

  1. 在構造函數內部,在該組件上創建一個鼠標滾輪事件。

     InitializeComponent(); this.pictureBox1.MouseWheel += pictureBox1_MouseWheel;
  2. 手動創建函數。 根據我的例子,稱之為“pictureBox1_MouseWheel”

     private void pictureBox1_MouseWheel(object sender, MouseEventArgs e) { //you can do anything here }
  3. 在該組件上創建一個 MouseHover 事件(轉到 PicureBox1 中的屬性,選擇事件,找到“MouseHover”並雙擊“MouseHover”事件)。

  4. 調用“焦點()”; 該 MouseHover 事件中的方法。

     pictureBox1.Focus();
  5. 現在運行程序。

Windows 將 WM_MOUSEWHEEL 消息發送到具有焦點的控件。 那不會是Panel,不是可以獲取焦點的控件。 一旦你在面板上放置一個控件,比如一個按鈕,那么按鈕就會獲得焦點和消息。

然而,該按鈕對消息沒有用,它沒有什么可滾動的。 Windows 注意到這一點並將消息發送給父級。 那是面板,現在它將滾動。

您將找到可以此答案中獲得焦點的自定義面板的代碼。


更新:請注意,此行為在 Windows 10 中發生了變化。默認情況下,新的“將鼠標懸停在非活動窗口上時滾動”選項處於打開狀態。 這使得鼠標滾輪的行為與其在瀏覽器或 Office 程序中的工作方式更加一致。 在這種特定情況下,圖片框現在獲取事件。 當心這個。

要手動接線...

this.panel1.MouseWheel += new System.Windows.Forms.MouseEventHandler(this.panel1_MouseWheel);

private void panel1_MouseWheel(object sender, System.Windows.Forms.MouseEventArgs e)
{
    ///process mouse event
}

更簡單的方法是在 Visual Studio 中單擊面板,轉到屬性視圖面板,選擇事件,找到並雙擊“鼠標滾輪”事件。

在 Winforms 中,這是使用Control.MouseWheel 事件實現的

獲取鼠標滾輪事件很棘手。 最簡單的方法是使用

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

而不是

this.panel1.MouseWheel += new System.Windows.Forms.MouseEventHandler(this.panel1_MouseWheel);

通過這種方式,表單獲取事件而不是控制。 這種方法很簡單,但有一個問題:您只能在表單中使用一個 mousewheel 事件。

如果您有多個控件來獲取鼠標滾輪事件,最好的方法是“Shehan Silva - weltZ”的這個答案

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM