Nano Hash - криптовалюты, майнинг, программирование

Подавить/перехватить Alt+Left/Alt+Right в WinForms WebBrowser Control

У нас есть приложение WinForms с WebBrowser в форме (в настоящее время компилируется для классической .NET Framework 4.7.2). Нам нужно подавить или перехватить комбинации клавиш Alt+Left и Alt+Right, когда этот элемент управления WebBrowser имеет фокус ввода для реализации нашей собственной навигации по истории. Мы попробовали несколько методов, включая перезапись Control. ProcessCmdKey() для элемента управления или всей формы, но это не помогает. Как сделать то, что нам нужно в .NET Framework на C# или VB.NET?



Ответы:


1

Хотя вы не можете подписаться на события WebBrowser KeyDown, KeyUp или KeyPress без возникновения ошибки времени выполнения, вы можете подписаться на Событие WebBrowser.PreviewKeyDown для обнаружения Alt-Left Arrow и Alt-RightArrow комбинации клавиш.

Если вы установите 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
  • Да, это помогает!! Было достаточно переопределить OnPreviewKeyDown() и выполнить наши пользовательские действия для Alt+Left/Right перед вызовом base.OnPreviewKeyDown(e), даже не устанавливая e.IsInputKey в True. Я также должен упомянуть, что WebBrowserShortcutsEnabled для нашего потомка элемента управления WebBrowser установлено значение False. 17.05.2021
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..