2012-12-28 81 views
3

我有這樣簡單的代碼在與C#GTK#Application.Quit()不退出該應用程序

Main.cs

using System; 
using Gtk; 

namespace Apu{ 
    class MainClass{ 
     public static void Main(string[] args){ 
      Application.Init(); 
      new ShowForm(); 
      Application.Run(); 
     } 
    } 
} 

ShowForm.cs

public partial class ShowForm: Gtk.Window{ 
    public ShowForm(): base(Gtk.WindowType.Toplevel){ 
     MessageDialog md = new MessageDialog(
      this, 
      DialogFlags.DestroyWithParent, 
      MessageType.Error, 
      ButtonsType.None, 
      "Test" 
     ); 

     md.SetPosition(Gtk.WindowPosition.CenterAlways); 
     md.Title = "Test window"; 
     md.AddButton("Don't stop", ResponseType.Ok); 
     md.AddButton("Stop", ResponseType.Cancel); 

     ResponseType result = (ResponseType)md.Run(); 

     if (result.Equals(ResponseType.Cancel)) { 
      Console.WriteLine("Quit!"); 
      md.DestroyEvent += delegate { 
       Application.Quit(); 
      }; 
      /*md.DeleteEvent += delegate { 
       Application.Quit(); 
      };*/ 
     } 

     md.Destroy(); 
    } 
} 

控制檯輸出Quit! ,但該程序不會退出。 DestroyEventDeleteEvent都不起作用。誰能解釋爲什麼?這是我的第一個應用程序c#,我第一次使用gtk#。我使用monodevelop作爲我的IDE。

編輯

Application.Exit()給出了錯誤:Gtk.Application does not contain a definition for 'Exit'

+1

使用Application.Exit(); – Arshad

+0

它給出了錯誤,請參閱我編輯的問題。 – maialithar

+1

爲什麼不直接調用Application.Quit()而不是將它添加到事件md.DestroyEvent中?您不必銷燬消息對話框,因爲垃圾收集將爲您完成。 –

回答

5

如果你想關閉過程中,儘量Environment.Exit(0)

+0

這是正確的答案,謝謝! – maialithar

+0

我建議,20分鐘ago..LOL你說它沒有工作.. – MethodMan

+0

@DJKRAZE:對不起,我一定誤解了你的回答 – maialithar

0

嘗試:

md.Destroyed += delegate { 
    Application.Quit(); 
}; 
+0

謝謝,但它沒有幫助。 – maialithar