2013-03-27 148 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