2012-08-07 164 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();

但是,不確定這是否是正確的方法。