2013-03-27 3 views
0

У меня есть классНедалеко XtraUserControl на клавишу ESC нажимается

MyWindows : XtraUserControl,ISmartPartInfoProvider 

И я хочу, чтобы закрыть его, когда нажата клавиша выхода.

Я использую Microsoft.Practices.CompositeUI.SmartParts MyWindows для отображения следующих окон: MyWindows temp = new MyWindows(); myWorkspace.Show (temp);

Стараюсь следующее:

В конструкторе

PreviewKeyDown += OnKeyDownP; 
KeyDown += OnKeyDown; 

С помощью метода:

private void OnKeyDownP(object sender, PreviewKeyDownEventArgs e) 
    { 
     if (e.KeyData == Keys.Escape) 
     { 
      this.Dispose(); 
     } 
    } 
    private void OnKeyDown(object sender, KeyEventArgs e) 
    { 
     if (e.KeyData == Keys.Escape) 
     { 
      this.Dispose(); 
     } 
    } 

Но нет событий trigerred.

Я что-то пропустил?

EDIT Это сообщение было полезно, для меня: Close a XtraUserControl on esc key pressed

+0

Как/где вы показываете usercontrol? Обычно сфокусированный элемент управления получает обработчики ключевых событий, а не форму. –

+0

Здравствуйте, я использую Microsoft.Practices.CompositeUI.SmartParts MyWindows: XtraUserControl, ISmartPartInfoProvider Тогда я MyWindows Темп = новый MyWindows(); myWorkspace.Show (temp); – Thomas

ответ

0

Да. Вы должны установить KeyPreview свойство вашего Form на true. И вы должны использовать свои события Form, чтобы поймать нажатие клавиши.

+0

Благодарим вас за ответ, но я не вижу такого свойства в DevExpress.XtraEditors.XtraUserControl. – Thomas

+0

Есть ли какая-либо форма, которая содержит этот элемент управления? Что у него есть в собственности «Родитель»? –

+0

Да, у него есть свойство Parent, потому что XtraUserControl наследуется от System.Windows.Forms.Control. – Thomas

Смежные вопросы