Событие 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();
}
}
Я нашел решение , gility по умолчанию "Конфигурация мыши". Оптическая USB-мышь Lenovo с колесиком конфигурация по умолчанию:
Панель управления / Мышь / Колесико / Колесо -> Включить универсальную прокрутку ;
Я изменил на:
Панель управления / Mouse / Wheel / Whell -> Использовать только эмуляцию прокрутки Microsoft Office 97
Теперь в коде .net MouseWheel работает с Focused Control .
Но вот вопросы:
Есть идеи?
Я попробовал ваш пример, и, были ли строки прокомментированы или нет, событие MouseWheel только загорелось, если кнопка сосредоточена. Такое поведение является особенностью. (Событие
событие
, как события клавиатуры, идет в фокусированный элемент управления)
Вы обычно должны убедиться, что элемент управления вы хотите обрабатывать событие MouseWeel.
Например, попробуйте позвонить кнопку1.Выберите ()
в событии нагрузки (или отображения или отображения), а затем с помощью колеса прокрутки.
Например:
private void Form1_Load(object sender, EventArgs e)
{
button1.MouseWheel += new MouseEventHandler(button1_MouseWheel);
button1.Select();
}