У нас есть приложение WinForms с WebBrowser в форме (в настоящее время компилируется для классической .NET Framework 4.7.2). Нам нужно подавить или перехватить комбинации клавиш Alt+Left и Alt+Right, когда этот элемент управления WebBrowser имеет фокус ввода для реализации нашей собственной навигации по истории. Мы попробовали несколько методов, включая перезапись Control. ProcessCmdKey() для элемента управления или всей формы, но это не помогает. Как сделать то, что нам нужно в .NET Framework на C# или VB.NET?
Подавить/перехватить Alt+Left/Alt+Right в WinForms WebBrowser Control
14.05.2021
- Вы можете переопределить форму
ProcessCmdKey
, а затем добавить условиеif (keyData == (Keys.Alt | Keys.Left)) { // do something }
. См. пример здесь: Как установить стиль HtmlElement с помощью мыши позиция при нажатии клавиши -- Вы не указали язык. 14.05.2021
Ответы:
1
Хотя вы не можете подписаться на события WebBrowser KeyDown, KeyUp или KeyPress без возникновения ошибки времени выполнения, вы можете подписаться на Событие WebBrowser.PreviewKeyDown для обнаружения Alt-Left Arrow и Alt-RightArrow kbd> комбинации клавиш.
Если вы установите PreviewKeyDownEventArgs.IsInputKey в true в обработчике событий, элемент управления WebBrowser не будет интерпретировать комбинацию как команды WebBrowser.GoBack/WebBrowser.GoFoward.
Private Sub WebBrowser1_PreviewKeyDown(sender As Object, e As PreviewKeyDownEventArgs) Handles WebBrowser1.PreviewKeyDown
If e.KeyData = (Keys.Left Or Keys.Alt) OrElse e.KeyData = (Keys.Right Or Keys.Alt) Then
' setting IsInputKey = true prevents the Browser for processing
' Alt-Left Arrow and Alt-Right Arrow as history navigation
e.IsInputKey = True
End If
End Sub
16.05.2021
Новые материалы
Кластеризация: более глубокий взгляд
Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..
Как написать эффективное резюме
Предложения по дизайну и макету, чтобы представить себя профессионально
Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..
Частный метод Python: улучшение инкапсуляции и безопасности
Введение
Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..
Как я автоматизирую тестирование с помощью Jest
Шутка для победы, когда дело касается автоматизации тестирования
Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..
Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv)
Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..
Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..
Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..
OnPreviewKeyDown()
и выполнить наши пользовательские действия для Alt+Left/Right перед вызовомbase.OnPreviewKeyDown(e)
, даже не устанавливаяe.IsInputKey
в True. Я также должен упомянуть, что WebBrowserShortcutsEnabled для нашего потомка элемента управления WebBrowser установлено значение False. 17.05.2021