Я использую VS 2008 и собираю свое приложение на Windows 7. Основная форма / окно имеет обработчик событий KeyDown
, как показано ниже:
Private Sub Form1_KeyDown(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles MyBase.KeyDown
MsgBox("control = " + e.Control.ToString + ", shift = " + e.Shift.ToString + ", e.Keycode = " + e.KeyCode.ToString)
Когда я собираю его и запускаю в VS, кажется, он работает нормально. Появляется окно сообщения с состоянием клавиш управления и Shift вместе с кодом клавиши, которую я нажал. Однако, если я беру исполняемый файл и запускаю его на компьютере с XP (оба используют .Net Runtime 3.5), как только открывается основная форма, появляется окно сообщения. По сути, событие «KeyDown» запускается без нажатия каких-либо клавиш. Окно сообщения возвращается с: "control = False, shift = False, e.Keycode = None"
.
Как это возможно? Как вызвать событие keyDown
, если не было нажато ни одной клавиши (что подтверждается выводом, содержащимся в окне сообщения?)
Есть ли какие-либо предложения о том, что может происходить или как я могу диагностировать это в окне XP, поскольку на нем нет Visual Studio?
Обновление Я попытался создать новый проект, в котором есть только «form1», и единственным кодом, стоящим за этим, является обработчик события keyDown. Он просто открывает пустое окно и открывает окно сообщения, если нажата клавиша. Он работал, как и ожидалось, в окне Win 7, но когда я переместил исполняемый файл в окно XP, он сразу же открыл окно сообщения, не нажимая клавишу. Очень странно.