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中的相同功能(这就是我正在使用的)。