Я использую VB.NET в Visual Studio 2010 таргетинг на .NET Framework 3.5.Ключ Escape закрывает форму Windows Forms без привязки к ней кода или настроек
В нашем (довольно большом) клиентском приложении есть одна форма (Windows Forms), с которой у нас возникла проблема. Он отображается с .ShowDialog (это не единственная форма, отображаемая с .ShowDialog). В форме есть кнопки «Закрыть» и «Отмена», а клавиши «Ввод» и «Выйти» соответственно привязаны к этим элементам управления (и это также делается для других форм). Код в кнопках выполняет вызов метода «Скрыть», чтобы сделать форму невидимой (она фактически выгружается позже в логике бизнес-процесса), и снова мы делаем это в другом месте с другими формами.
Нажатие кнопок «Закрыть» или «Отмена» работает по желанию. Нажатие кнопки Введите ключ также работает по желанию (Close click is run). Но когда нажата клавиша Escape, сначала запускается логика кнопки «Отмена», как и ожидалось, но затем мы получаем событие «Закрытое событие», и форма выгружается!
Нет кода в другом месте, который ищет ключ Escape и выполняет закрытие формы. Мы попытались установить аргумент Cancel в событии закрытия, но безрезультатно - форма все еще выгружается. Мы также отключили клавишу Escape от кнопки «Отмена», нажав Escape, а затем не запустив код «Отмена» (как и ожидалось), но событие «Закрытие формы» все еще срабатывает.
Я не смог воспроизвести это поведение в тестовой программе, поэтому, к сожалению, я не могу опубликовать рабочий (нерабочий, фактически) пример кода.
Любые данные о том, что происходит? Почему клавиша Escape закрывает форму?
Возможно, самое важное, что мне нужно сделать, чтобы исследовать это дальше и понять это?
Предполагаете, что у вас есть свойство CancelButton в форме, установленной на кнопку «Отмена». – Steve
Код поможет. Покажите нам код, который создает и показывает форму, а также любой другой код, который взаимодействует с объектом формы. –