C#GTK#MenuBar不显示

问题描述:

我想学习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

下面的代码(只是一个修改/完成或你的)完美的作品。我看到你在使用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(); 
     } 
    } 
} 

希望这会有所帮助。