Member 10376725 Ответов: 1

Как захватить клавиши со стрелками в программе .NET?


У меня есть программа .NET, которая захватывает клавиши со стрелками вверх и вниз для перемещения по базе данных SQL. Код работал так, как предполагалось, с тех пор как я вошел, недавно у меня возникла проблема, которая потребовала удаления и переустановки Windows 10, и с тех пор стрелки вверх и вниз не работают через базу данных. Я использую Visual Studio и Windows 10, и мой код таков::

Private Sub Form1_KeyDown(ByVal sender As Object, ByVal e As KeyEventArgs) Handles MyBase.KeyDown

    Select Case e.KeyCode
        Case Keys.Up
            DVD_ListBindingSource.MovePrevious()
            e.Handled = True
        Case Keys.Down
            DVD_ListBindingSource.MoveNext()
            e.Handled = True
    End Select
End Sub

Не знаю, куда идти дальше

Что я уже пробовал:

Поскольку код уже работал раньше, я понятия не имею, с чего начать. Я не уверен, есть ли элемент реестра, который нужно включить или выключить, или мне нужно настроить свой код.

1 Ответов

Рейтинг:
5

Dave Kreskowiak

Если форма обрабатывает ключевые события, то она также должна иметь KeyPreview = True для того, чтобы обработчики событий формы получили первую трещину в ключевых событиях. В противном случае ключевые события будут идти прямо к элементу управления, который имеет фокус, а не к форме.


Member 10376725

Дейв, эта программа развивается уже около 6 лет, и мне никогда не приходилось использовать ее раньше. Но это не значит, что я не должен был, просто не видел. Я не знаю, куда его девать, я попробовал его в подпрограмме, а потом в объявлениях, и ни то, ни другое ничего не изменило. Эта переустановка вызвала ряд проблем, Во-первых, я не мог опубликовать программу и каждый раз, когда я пытался ее установить, хотел установить .NET Framework 4.7.2. наконец, получил ее для публикации, но все еще хочет установить фреймворк. Но это действительно взволновало меня.

Dave Kreskowiak

Я просто рассказываю вам, как работают ключевые события. Без включения KeyPreview, если форма имеет фокус, то эти события будут работать. Если один из элементов управления, например datagrid, кнопка или любой другой элемент управления в форме, имеет фокус, то они не будут.

Вы можете просто включить KeyPreview, просто нажав на форму в конструкторе и найдя элемент KeyPreview в окне свойств.