2017-10-20 69 views
1

我想學習GTK#(顯然在C#中)。我正在使用Ubuntu,並使用mono進行編譯。我想創建一個MenuBar並添加一些Menu和MenuItem。 當我編譯時,一切正常,但我的菜單不顯示。C#GTK#MenuBar不顯示

public MainWindow() : base("LayText") 
{ 
    SetDefaultSize(800, 600); 
    SetPosition(WindowPosition.Center); 
    DeleteEvent += delegate { Application.Quit(); }; 

    this.InitializeComponent(); 

    ShowAll(); 
} 

private void InitializeComponent() 
{ 
    this.m_new = new MenuItem("Nouveau fichier"); 
    this.m_open = new MenuItem("Ouvrir fichier"); 
    this.m_exit = new MenuItem("Quitter"); 

    this.file = new Menu(); 
    this.file.Append(this.m_new); 
    this.file.Append(this.m_open); 
    this.file.Append(this.m_exit); 

    this.menu_file = new MenuItem("Fichier"); 
    this.menu_file.Submenu = this.file; 

    this.menu_bar = new MenuBar(); 
    this.menu_bar.Append(this.menu_file); 

    this.vbox_princ = new VBox(false, 2); 
    this.vbox_princ.PackStart(this.menu_bar, false, false, 0); 

    this.Add(this.vbox_princ); 
} 

當我編譯此代碼時,我得到的窗口,但沒有我設置的菜單。

Screenshot of the window

謝謝你幫助我。
Layce17

+0

嘗試調用菜單上的ShowAll() – knocte

+0

沒有不工作,我嘗試在Menu,MenuBar和我的menu_file項目上,但沒有人正在工作。 – Layce17

回答

0

下面的代碼(只是一個修改/完成或你的)完美的作品。我看到你在使用Ubuntu。雖然我不使用它,但我認爲它顯示頂部狀態欄中的菜單欄。你檢查過了嗎?

using Gtk; 

namespace Kk 
{ 
    class MainWindow: Gtk.Window { 
     public MainWindow() : base("LayText") 
     { 
      SetDefaultSize(800, 600); 
      SetPosition(WindowPosition.Center); 
      DeleteEvent += delegate { Application.Quit(); }; 

      this.InitializeComponent(); 

      ShowAll(); 
     } 

     private void InitializeComponent() 
     { 
      var m_new = new MenuItem("Nouveau fichier"); 
      var m_open = new MenuItem("Ouvrir fichier"); 
      var m_exit = new MenuItem("Quitter"); 

      var file = new Menu(); 
      file.Append(m_new); 
      file.Append(m_open); 
      file.Append(m_exit); 

      var menu_file = new MenuItem("Fichier"); 
      menu_file.Submenu = file; 

      var menu_bar = new MenuBar(); 
      menu_bar.Append(menu_file); 

      var vbox_princ = new VBox(false, 2); 
      vbox_princ.PackStart(menu_bar, false, false, 0); 

      this.Add(vbox_princ); 
     } 

     public static void Main() 
     { 
      Application.Init(); 
      new MainWindow(); 
      Application.Run(); 
     } 
    } 
} 

希望這會有所幫助。