2013-03-27 149 views
0

我有一个类关闭上ESC键按下XtraUserControl

MyWindows : XtraUserControl,ISmartPartInfoProvider 

而且我想在按下ESC键时将其关闭。

我使用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。

我错过了什么吗?

编辑 这个职位是有用的对我来说: Close a XtraUserControl on esc key pressed

+0

你在哪里显示usercontrol?通常,重点控制将收到关键事件处理程序,而不是表单。 – 2013-03-27 15:36:22

+0

你好,我用Microsoft.Practices.CompositeUI.SmartParts MyWindows:XtraUserControl,ISmartPartInfoProvider 后来我做 MyWindows临时=新MyWindows(); myWorkspace.Show(temp); – Thomas 2013-03-27 15:41:56

回答

0

是。您应将FormKeyPreview财产设置为true。你应该使用你的Form事件来捕捉关键的按键。

+0

感谢您的回答,但我在DevExpress.XtraEditors.XtraUserControl中看不到这样的属性。 – Thomas 2013-03-27 15:38:23

+0

是否有任何形式,主持这种控制? 'Parent'属性有什么? – 2013-03-27 15:41:29

+0

是的,他有一个Parent属性,因为XtraUserControl继承自System.Windows.Forms.Control。 – Thomas 2013-03-27 15:50:07