Я только что получил Win10 и подтвердил. Это побочный эффект новой функции Windows 10, настроенной в настройках> Устройства> Мышь & тачпада. Он называется «Прокрутка неактивных окон, когда я навис над ними», он включен по умолчанию. This web page упоминает об этом.
Это действительно приятная функция, я лично обязательно ее сохраню, и это, скорее всего, и ваши пользователи. Предыдущие версии Windows отправили сообщения с колесиком мыши в элемент управления с фокусом, что привело к тому, что многие пользователи стали привыкать к тому, как ведет себя мышь, скажем, в браузере. Обратите внимание, что панель прокрутки помогает, она перерисовывает большой палец, чтобы указать, что он больше не активен, когда вы перемещаете мышь с панели.
Фиксация технически возможна, вам придется перенаправить сообщение обратно на полосу прокрутки. Ничего особенно красивая:
public Form1() {
InitializeComponent();
panel1.MouseWheel += RedirectMouseWheel;
}
private bool redirectingWheel;
private void RedirectMouseWheel(object sender, MouseEventArgs e) {
if (this.ActiveControl != sender && !redirectingWheel) {
redirectingWheel = true;
SendMessage(this.ActiveControl.Handle, 0x020A,
new IntPtr(e.Delta << 16), IntPtr.Zero);
redirectingWheel = false;
var hmea = (HandledMouseEventArgs)e;
hmea.Handled = true;
}
}
[System.Runtime.InteropServices.DllImport("user32.dll")]
private static extern IntPtr SendMessage(IntPtr hWnd, int msg, IntPtr wp, IntPtr lp);
Но не опережать пока, пользователи не склонны ожидать, что поведение Win10, в конце концов :)
Используйте Spy ++, сообщите нам, какое окно получает сообщение WM_MOUSEWHEEL. –
@HansPassant Когда мышь находится над панелью, панель получает сообщение WM_MOUSEWHEEL. Когда я перемещаюсь по полосе прокрутки, он получает сообщения WM_MOUSEWHEEL. Когда я просматриваю панель с помощью сенсорной панели, свиток прокручивается. http://s13.postimg.org/n8jpc1blz/screenshot_1097.png –