C#GTK#MenuBar没有显示

时间:2017-10-20 07:31:42

标签: c# gtk#

我正在尝试学习GTK#(显然是在C#中)。我正在使用Ubuntu,我用mono编译。我想创建一个MenuBar并添加一些Menu和MenuItem。 当我编译时,一切正常,但我的菜单没有显示。

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

1 个答案:

答案 0 :(得分: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();
        }
    }
}

希望这有帮助。