2009-06-12 47 views
1

System.Windows.Forms.Form.CancelButtonWinForm的「CancelButton」等效於GTK#

獲取或設置當用戶按下ESC鍵時點擊按鈕控制。

所以,基本上,這是同樣的事情在GTK#的.Default窗口paramater,除了逃跑,而不是回車鍵。這是否存在,我只是想念它,還是我必須嘗試一起破解一些東西來獲得這個功能?

編輯:既然兩個人都做到了這一點,這個問題是關於GTK#,不是的WinForms。我需要在winforms中獲得與CancelButton相同的功能,但我需要它在GTK#中。

回答

2

經過一段時間的討論後,似乎與Winforms不同(至少沒有和他們一起玩過),GTK似乎將關鍵事件傳遞給widget樹,所以,下面的代碼工作得很好,重點關注在窗口小部件的任何:

public class ConnectWindow : GTK.Window 
{ 
    public ConnectWindow(Window parent) 
     : base(WindowType.Toplevel) 
    { 
     this.Parent = parent; 
     _init(); 
    } 

    private void _init() 
    { 
     this.Title = "Connect to..."; 
     this.Modal = true; 
     this.WindowPosition = WindowPosition.Center; 
     this.KeyReleaseEvent += ConnectWindow_KeyReleaseEvent; 
     // [snip] other initialisation stuff 
    } 

    void ConnectWindow_KeyReleaseEvent(object o, KeyReleaseEventArgs args) 
    { 
     if (args.Event.Key == Gdk.Key.Escape) 
     { 
      btnCancel.Activate(); 
     } 
    } 
} 
-3

爲了得到這個自動工作有幾件事情你需要做的:顯示該窗口時

  • 使用的ShowDialog。它只適用於模態對話框。
  • 在窗體上將CancelButton屬性設置爲您用來取消按鈕的按鈕。

當你做這些事情時按下退出鍵會自動關閉窗口。

+0

請閱讀編輯我只是把......我瞭解的WinForms的作品,我需要在GTK#相同的功能,但(這是我使用的是什麼)。 – 2009-06-12 10:20:42