2009-06-12 42 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