C# GTK# 菜单栏未显示



我正在尝试学习GTK#(显然是用C#)。我正在使用 Ubuntu,我用单声道编译。我想创建一个菜单栏并向其添加一些菜单和菜单项。当我编译时,一切正常,但我的菜单没有显示。

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);
}

当我编译此代码时,我得到了窗口,但没有我设置的菜单。

窗口的屏幕截图

谢谢你帮助我。
莱斯17

以下代码(只是修改/完成或您的修改/完成)工作得很好。我看到你正在使用 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();
        }
    }
}

希望这有帮助。

最新更新