Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/295.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# WinForm“;取消按钮“;等效于GTK#_C#_Gtk# - Fatal编程技术网

C# WinForm“;取消按钮“;等效于GTK#

C# WinForm“;取消按钮“;等效于GTK#,c#,gtk#,C#,Gtk#,System.Windows.Forms.Form.cancel按钮: 获取或设置用户按ESC键时单击的按钮控件 因此,基本上,它与GTK#中的.Default窗口参数相同,除了escape而不是enter键。这是否存在,我只是错过了它,还是我必须尝试破解一些东西来获得这个功能 编辑:既然有两个人这样做了,这个问题是关于GTK#,而不是Winforms。我需要在winforms中获得与CancelButton相同的功能,但在GTK中我需要它。要让它自动工作,您需要做以下几件事: 显示窗口时使用

System.Windows.Forms.Form.cancel按钮

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

因此,基本上,它与GTK#中的
.Default
窗口参数相同,除了escape而不是enter键。这是否存在,我只是错过了它,还是我必须尝试破解一些东西来获得这个功能


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

要让它自动工作,您需要做以下几件事:

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

当您执行这些操作时,按escape键将自动关闭窗口。

在玩了一段时间后,似乎与Winforms不同(至少不玩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();
        }
    }
}

请阅读我刚刚输入的编辑。。。我了解winforms的工作原理,但我需要GTK中的相同功能(这就是我正在使用的)。