Событие mouseWheel не стреляет при использовании любого управления с полосами прокрутки (в Windows Forms C#)

Событие mouseWheel не стреляет, когда я' использую любое управление (ListBox, Панель, TextBox) с полосами прокрутки.

Воспроизвести проблему:

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();
  }
 }
13
задан halorty 20 January 2010 в 07:38
поделиться

3 ответа

Я нашел решение , gility по умолчанию "Конфигурация мыши". Оптическая USB-мышь Lenovo с колесиком конфигурация по умолчанию:

Панель управления / Мышь / Колесико / Колесо -> Включить универсальную прокрутку ;

Я изменил на:

Панель управления / Mouse / Wheel / Whell -> Использовать только эмуляцию прокрутки Microsoft Office 97

Теперь в коде .net MouseWheel работает с Focused Control .


Но вот вопросы:

  • как я могу исправить это в коде .net?
  • как я могу обнаружить эту ситуацию в коде .net?

Есть идеи?

2
ответ дан 1 December 2019 в 23:47
поделиться

Я попробовал ваш пример, и, были ли строки прокомментированы или нет, событие MouseWheel только загорелось, если кнопка сосредоточена. Такое поведение является особенностью. (Событие событие , как события клавиатуры, идет в фокусированный элемент управления)

0
ответ дан 1 December 2019 в 23:47
поделиться

Вы обычно должны убедиться, что элемент управления вы хотите обрабатывать событие MouseWeel.

Например, попробуйте позвонить кнопку1.Выберите () в событии нагрузки (или отображения или отображения), а затем с помощью колеса прокрутки.

Например:

private void Form1_Load(object sender, EventArgs e)
{
    button1.MouseWheel += new MouseEventHandler(button1_MouseWheel);

    button1.Select();  
}
2
ответ дан 1 December 2019 в 23:47
поделиться
Другие вопросы по тегам:

Похожие вопросы: