WinForm“CancelButton”相当于GTK#

时间:2009-06-12 06:56:20

标签: c# gtk#

System.Windows.Forms.Form.CancelButton

  

获取或设置用户按下ESC键时单击的按钮控件。

所以,基本上,它与GTK#中的.Default窗口参数相同,除了escape而不是enter键。这是否存在,我是否只是错过它,或者我是否必须尝试一起破解它才能获得此功能?

修改:由于有两个人这样做了,这个问题是关于 GTK# ,而不是Winforms。我需要在winforms中获得与CancelButton相同的功能,但我需要在GTK中使用它。

2 个答案:

答案 0 :(得分:2)

在玩了一段时间之后,似乎与Winforms不同(至少没有玩过它们),GTK似乎在小部件树下传递关键事件,因此,以下代码可以正常工作,专注于任何窗口上的小部件:

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();
        }
    }
}

答案 1 :(得分:-3)

要让它自动生效,您需要做几件事:

  • 显示窗口时使用ShowDialog。它仅适用于模态对话框。
  • 在表单上将CancelButton属性设置为您用来取消按钮的按钮。

执行这些操作时,按退出键将自动关闭窗口。