Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Разработка Windows Forms > Закрыть форму эскэйпом.


Автор: Bogdan1024 20.8.2009, 13:11
Хочу закрыть форму эскэйпом. Пробовал повесить на обработчики KeyDown и KeyUp такой код:
Код

            if (e.KeyData == Keys.Escape)
                this.Close();

Не работает :( 
Что не так?

Автор: Crypton 20.8.2009, 16:24
Form.CancelButton назначить на невидимую кнопку которая и будет закрывать форму. 

Дело в том, что на котором элементе управления сейчас находится фокус, на нем и вызываются события KeyUp/KeyDown, естественно подписки на них нет вот и ничего не происходит.  http://msdn.microsoft.com/en-us/library/system.windows.forms.form.cancelbutton.aspx

Автор: KelTron 21.8.2009, 06:35
Поставь свойство формы KeyPreview = true.

Автор: kobra 21.8.2009, 09:52
Код

        protected override bool ProcessDialogKey(Keys keyData)
        {
            
                if (keyData == Keys.Escape)
                {
                  
                }
            return base.ProcessDialogKey(keyData);
        }

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)