Alex Rivera | Logout

MouseWheel event doesn't fire when using any control with scrolbars (in C# Windows Forms)

Asked 2010-01-19T15:03:09.193
14

MouseWheel event doesn't fire when I' am using any control (ListBox, Panel, TextBox) with scrollbars.

To reproduce problem:

public class Form1 : Form
 {
  private readonly Button button1;
  private readonly TextBox textBox1;

  private void button1_MouseWheel(object sender, MouseEventArgs e)
  {
   ToString(); // doesn't fire when uncomment lines below
  }

  public Form1()
  {
   button1 = new Button();
   textBox1 = new TextBox();
   SuspendLayout();

   button1.Location = new System.Drawing.Point(80, 105);
   button1.Size = new System.Drawing.Size(75, 23);
   button1.MouseWheel += button1_MouseWheel;
   button1.Click += button1_Click;

   textBox1.Location = new System.Drawing.Point(338, 105);
   //textBox1.Multiline = true; // uncomment this
   //textBox1.ScrollBars = ScrollBars.Vertical;  // uncomment this 
   textBox1.Size = new System.Drawing.Size(100, 92);

   ClientSize = new System.Drawing.Size(604, 257);
   Controls.Add(textBox1);
   Controls.Add(button1);
   ResumeLayout(false);
   PerformLayout();
  }

  // Clicking the button sets Focus, but even I do it explicit Focus() or Select()
  // still doesn't work
  private void button1_Click(object sender, System.EventArgs e)
  {
   button1.Focus();
   button1.Select();
  }
 }
Edit
Report

1 Answer

2

I found solution, gility is default "Mouse Configuration". Lenovo USB Optical Wheel Mouse default configuration is:

Control Panel/Mouse/Wheel/Whell->Enable Universal Scrolling;

I changed to:

Control Panel/Mouse/Wheel/Whell->Use Microsoft Office 97 Scrolling Emulation Only

Now in .net code MouseWheel working with Focused Control.


But questions are:

  • how can I fix it in .net code?
  • how can I detect this situation in .net code?

Any ideas ?

answered 2010-01-20T08:26:53.177

Your Answer