Если Вы хотите к UPSERT больше чем одну запись за один раз, можно использовать СЛИЯНИЕ оператора ANSI SQL:2003 DML.
MERGE INTO table_name WITH (HOLDLOCK) USING table_name ON (condition)
WHEN MATCHED THEN UPDATE SET column1 = value1 [, column2 = value2 ...]
WHEN NOT MATCHED THEN INSERT (column1 [, column2 ...]) VALUES (value1 [, value2 ...])
Здесь ; Короче говоря, вам нужно обрабатывать сообщение Windows вручную (оно не обрабатывается напрямую в .NET - код взят из связанной статьи):
protected override void WndProc (ref Message m) { base.WndProc (ссылка м); если (m.HWnd! = this.Handle) { возвращение; } переключатель (m.Msg) { case Win32Messages.WM_MOUSEHWHEEL: FireMouseHWheel (m.WParam, m.LParam); m.Result = (IntPtr) 1; перерыв; дефолт: перерыв; } } ... абстрактный класс Win32Messages { public const int WM_MOUSEHWHEEL = 0x020E; // обнаружено через Spy ++ }
На основании этой статьи , если у вас есть драйверы IntelliPoint, вы получите сообщения WM_MOUSEHWHEEL .