2012-08-07 147 views
2

我在我的Gtk#应用程序中有2个全屏窗口,主要和次要窗口。我有buttonclose在第二种形式的单击事件处理程序必须关闭此窗口,并进行一些操作:如何关闭Gtk#窗口

protected void OnButtonClose_Clicked (object sender, EventArgs e) 
    { 
     //some operation 

     this.Dispose();       
    } 

但窗口不关闭!如果我在主窗口中使用此代码,该窗口将关闭,应用程序将终止。为什么此代码适用于主窗口,不适用于辅助?我如何关闭辅助窗口?

回答

5

尝试Window.Destroy()应该销毁辅助窗口的窗口。你也可以用.Hide(),但不知道这是你的意图

+0

非常感谢! Window.Destroy()真的帮了我 – Mixim 2012-08-08 01:47:19

1

利用这个隐藏:

protected void OnBtnCancelarClicked (object sender, EventArgs e) 
{ 
    this.Destroy(); 
} 
+0

这似乎不工作:窗口关闭,但调试器不终止。我为此假定不调用包含Application.Quit()的OnDeleteEvent()处理程序。如果我覆盖OnDestroyed()并在该上下文中调用Application.Quit(),则应用程序将正确终止。这似乎有点奇怪:点击窗口上的关闭符号会导致OnDeleteEvent(),但这与OnDestroyed()完全无关,并且在某种程度上与OnDestroyedEvent()完全无关。可以s.o.帮助解释这种行为?谢谢! – 2016-06-28 14:34:22

2

在此我发现一吨的研究以后有什么似乎为我正常工作。

public WhateverWindow():base (Gtk.WindowType.TopLevel) { 
DeleteEvent += delegate { Application.Quit(); }; 
} 

尝试在你的函数中使用DeleteEvent += delegate { Application.Quit(); }; 看看这是否没有帮助。

+0

我不认为OP想从第二窗口退出他的应用程序... – 2016-02-19 08:39:54

1

似乎按预期工作的唯一方法是调用:

RootWindow.Destroy();

但是,不确定这是否是正确的方法。