2017-10-20 6 views
1

J'essaie d'apprendre le GTK # (évidemment en C#). J'utilise Ubuntu et je compile avec mono. Je veux créer un MenuBar et ajouter un peu de Menu, et MenuItem à celui-ci. Lorsque je compile, tout est OK mais mon menu ne s'affiche pas.C# GTK # MenuBar n'affiche pas

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

Quand je compile ce code j'obtiens la fenêtre mais sans le menu que je l'ai défini.

Screenshot of the window

Merci pour votre aide.
Layce17

+0

essayez d'appeler ShowAll() sur le menu – knocte

+0

Non ne fonctionne pas, j'ai essayé sur le Menu, le MenuBar et mon menu_file Item mais personne ne travaille. – Layce17

Répondre

0

Le code suivant (juste une modification/achèvement ou le vôtre) fonctionne parfaitement. Je vois que vous utilisez Ubuntu. Bien que je ne l'utilise pas, je pense qu'il montre la barre de menu dans la barre d'état supérieure. Avez-vous vérifié cela?

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

Espérons que cela aide.