public void ZoomViewBody(object sender, MouseWheelEventArgs e)
{
if (Keyboard.IsKeyDown(Key.LeftAlt) || Keyboard.IsKeyDown(Key.RightAlt))
{
//код...
}
}
public void ZoomViewDistance(object sender, MouseWheelEventArgs e)
{
if (Keyboard.IsKeyDown(Key.LeftCtrl) || Keyboard.IsKeyDown(Key.RightCtrl))
{
//код...
}
}
После нажатия Аlt, Ctrl не отлавливает. Нужно ПРОСТО нажать Alt снова,чтобы CTRL снова начал отлавливать. В режиме Дебаг заходит без проблем в код ViewDistance и выполняет код.
Помогите решить вопрос :D Пожалуйста)
Ответ собранный из разных источников.
Искал по запросам: "wpf отключить поведение alt", "wpf после нажатия alt приложение замирает" и т.д.
Alt - клавиша модификатор. В MVVM используется так
<KeyBinding Modifiers="Alt"
Key="D"
Command="{Binding ...}" />
Такое поведение определяется операционной системой.
Если нажать и отпустить Alt, а потом нажать стрелку вниз, откроется меню.
Такое же поведение может быть у клавиши F10.
Нажатие Alt+кнопки на цифровой клавиатуре(Numpad) зарезервировано для ввода символов
https://ru.wikipedia.org/wiki/Alt-код
Коды сообщений
https://docs.microsoft.com/en-us/windows/win32/inputdev/wm-syskeydown
Коды клавиш
https://docs.microsoft.com/en-us/windows/win32/inputdev/virtual-key-codes
Как решить проблему:
<Window x:Class=...
Loaded="MainWindow_Loaded">
using System.Windows.Interop;
private void MainWindow_Loaded(object sender, RoutedEventArgs e)
{
HwndSource.FromHwnd(new WindowInteropHelper(this).Handle)?.AddHook(WndProc);
}
private const int WM_SYSKEYDOWN = 0x0104;
private const int VK_MENU = 0x12;
private static IntPtr WndProc(IntPtr hWnd, int msg, IntPtr wParam, IntPtr lParam, ref bool handled)
{
if (msg == WM_SYSKEYDOWN && wParam.ToInt32() == VK_MENU)
handled = true;
return IntPtr.Zero;
}
Здесь решение для WindowsForms
https://stackoverflow.com/questions/15090994/disable-normal-behavior-of-alt-key
Здесь ответ по поводу мыши
https://stackoverflow.com/questions/37485091/wpf-intercept-global-mouse-movements-like-using-imessagefilter-in-windows-form
Виртуальный выделенный сервер (VDS) становится отличным выбором
Создал скрипт, который пользуется библиотекой UnityEditor и в нем используется класс EditorUtility, для вызова проводника, чтобы выдать путь к файлуВ...
Ошибка CS1061 "T" не содержит определения "CompareTo", и не удалось найти доступный метод расширения "CompareTo", принимающий тип "T" в качестве первого...
Пишу редактор кода на Windows Forms с возможностью следить за процессом написания с других компьютеровКогда клиент(писатель) пишет, каждое изменение...
Разворачиваю бекап сайта на локалке (опен сервер), в фале settingsphp и dbconn