<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                # GTK 中的菜單 > 原文: [http://zetcode.com/gui/gtksharp/menus/](http://zetcode.com/gui/gtksharp/menus/) 在 GTK# 編程教程的這一部分中,我們將使用菜單。 菜單欄是 GUI 應用中最常見的部分之一。 它是位于各個菜單中的一組命令。 在控制臺應用中,我們必須記住各種奧術命令,而在這里,我們將大多數命令分組為邏輯部分。 這些公認的標準可進一步減少學習新應用的時間。 ## 簡單菜單 在第一個示例中,我們將創建一個帶有一個文件菜單的菜單欄。 該菜單將只有一個菜單項。 通過選擇項目,應用退出。 `simplemenu.cs` ```cs using Gtk; using System; class SharpApp : Window { public SharpApp() : base("Simple menu") { SetDefaultSize(250, 200); SetPosition(WindowPosition.Center); DeleteEvent += delegate { Application.Quit(); }; MenuBar mb = new MenuBar(); Menu filemenu = new Menu(); MenuItem file = new MenuItem("File"); file.Submenu = filemenu; MenuItem exit = new MenuItem("Exit"); exit.Activated += OnActivated; filemenu.Append(exit); mb.Append(file); VBox vbox = new VBox(false, 2); vbox.PackStart(mb, false, false, 0); Add(vbox); ShowAll(); } void OnActivated(object sender, EventArgs args) { Application.Quit(); } public static void Main() { Application.Init(); new SharpApp(); Application.Run(); } } ``` 這是一個最小的菜單欄功能示例。 ```cs MenuBar mb = new MenuBar(); ``` `MenuBar`小部件已創建。 ```cs Menu filemenu = new Menu(); MenuItem file = new MenuItem("File"); file.Submenu = filemenu; ``` 創建頂層`MenuItem`。 ```cs MenuItem exit = new MenuItem("Exit"); exit.Activated += OnActivated; filemenu.Append(exit); ``` 將創建出口`MenuItem`,并將其附加到文件`MenuItem`中。 ```cs mb.Append(file); ``` 頂級`MenuItem`被附加到`MenuBar`小部件。 ```cs VBox vbox = new VBox(false, 2); vbox.PackStart(mb, false, false, 0); ``` 與其他工具包不同,我們必須自己照顧布局管理。 我們將菜單欄放入垂直框中。 ![Simple menu](https://img.kancloud.cn/6e/bc/6ebc5b4ab4a6d16cb60971d053fd3f90_258x228.jpg) 圖:簡單菜單 ## 圖像菜單 在下一個示例中,我們將進一步探索菜單。 我們將圖像和加速器添加到我們的菜單項中。 加速器是用于激活菜單項的鍵盤快捷鍵。 `imagemenu.cs` ```cs using Gtk; using System; class SharpApp : Window { public SharpApp() : base("Image menu") { SetDefaultSize(250, 200); SetPosition(WindowPosition.Center); DeleteEvent += delegate { Application.Quit(); }; MenuBar mb = new MenuBar(); Menu filemenu = new Menu(); MenuItem file = new MenuItem("File"); file.Submenu = filemenu; AccelGroup agr = new AccelGroup(); AddAccelGroup(agr); ImageMenuItem newi = new ImageMenuItem(Stock.New, agr); newi.AddAccelerator("activate", agr, new AccelKey( Gdk.Key.n, Gdk.ModifierType.ControlMask, AccelFlags.Visible)); filemenu.Append(newi); ImageMenuItem open = new ImageMenuItem(Stock.Open, agr); open.AddAccelerator("activate", agr, new AccelKey( Gdk.Key.n, Gdk.ModifierType.ControlMask, AccelFlags.Visible)); filemenu.Append(open); SeparatorMenuItem sep = new SeparatorMenuItem(); filemenu.Append(sep); ImageMenuItem exit = new ImageMenuItem(Stock.Quit, agr); exit.AddAccelerator("activate", agr, new AccelKey( Gdk.Key.q, Gdk.ModifierType.ControlMask, AccelFlags.Visible)); exit.Activated += OnActivated; filemenu.Append(exit); mb.Append(file); VBox vbox = new VBox(false, 2); vbox.PackStart(mb, false, false, 0); vbox.PackStart(new Label(), false, false, 0); Add(vbox); ShowAll(); } void OnActivated(object sender, EventArgs args) { Application.Quit(); } public static void Main() { Application.Init(); new SharpApp(); Application.Run(); } } ``` 我們的示例顯示了具有三個子菜單項的頂級菜單項。 每個菜單項都有一個圖像和一個加速器。 退出菜單項的加速器處于活動狀態。 ```cs AccelGroup agr = new AccelGroup(); AddAccelGroup(agr); ``` 要使用加速器,我們創建一個全局`AccelGroup`對象。 稍后將使用。 ```cs ImageMenuItem newi = new ImageMenuItem(Stock.New, agr); ``` `ImageMenuItem`已創建。 圖片來自圖片庫。 ```cs exit.AddAccelerator("activate", agr, new AccelKey( Gdk.Key.q, Gdk.ModifierType.ControlMask, AccelFlags.Visible)); ``` 這將為退出菜單項創建 `Ctrl + Q` 加速器。 ```cs SeparatorMenuItem sep = new SeparatorMenuItem(); filemenu.Append(sep); ``` 這些行創建一個分隔符。 它用于將菜單項分組為邏輯組。 ![Image menu](https://img.kancloud.cn/0c/52/0c5294ea5000f89324a8167251b8812e_258x228.jpg) 圖:圖像 menu ## `CheckMenuItem` `CheckMenuItem`是帶有復選框的菜單項。 它可以用于布爾屬性。 `checkmenuitem.cs` ```cs using Gtk; using System; class SharpApp : Window { private Statusbar statusbar; public SharpApp() : base("Check menu item") { SetDefaultSize(250, 200); SetPosition(WindowPosition.Center); DeleteEvent += delegate { Application.Quit(); }; MenuBar mb = new MenuBar(); Menu filemenu = new Menu(); MenuItem file = new MenuItem("File"); file.Submenu = filemenu; Menu viewmenu = new Menu(); MenuItem view = new MenuItem("View"); view.Submenu = viewmenu; CheckMenuItem stat = new CheckMenuItem("View Statusbar"); stat.Toggle(); stat.Toggled += OnStatusView; viewmenu.Append(stat); MenuItem exit = new MenuItem("Exit"); exit.Activated += OnActivated; filemenu.Append(exit); mb.Append(file); mb.Append(view); statusbar = new Statusbar(); statusbar.Push(1, "Ready"); VBox vbox = new VBox(false, 2); vbox.PackStart(mb, false, false, 0); vbox.PackStart(new Label(), true, false, 0); vbox.PackStart(statusbar, false, false, 0); Add(vbox); ShowAll(); } void OnStatusView(object sender, EventArgs args) { CheckMenuItem item = (CheckMenuItem) sender; if (item.Active) { statusbar.Show(); } else { statusbar.Hide(); } } void OnActivated(object sender, EventArgs args) { Application.Quit(); } public static void Main() { Application.Init(); new SharpApp(); Application.Run(); } } ``` 在我們的代碼示例中,我們顯示一個檢查菜單項。 如果該復選框已激活,則顯示狀態欄小部件。 如果不是,狀態欄將被隱藏。 ```cs CheckMenuItem stat = new CheckMenuItem("View Statusbar"); ``` `CheckMenuItem`小部件已創建。 ```cs stat.Toggle(); ``` `Toggle()`方法選中/取消選中檢查菜單項。 ```cs if (item.Active) { statusbar.Show(); } else { statusbar.Hide(); } ``` 根據`CheckMenuItem`的狀態,我們顯示或隱藏狀態欄小部件。 ![CheckMenuItem](https://img.kancloud.cn/9e/dd/9edd6920fe57a4556685cb3fd909033a_258x228.jpg) 圖:`CheckMenuItem` ## 子菜單 我們的最后一個示例演示了如何在 GTK# 中創建一個子菜單。 `submenu.cs` ```cs using Gtk; using System; class SharpApp : Window { public SharpApp() : base("Submenu") { SetDefaultSize(250, 200); SetPosition(WindowPosition.Center); DeleteEvent += delegate { Application.Quit(); }; MenuBar mb = new MenuBar(); Menu filemenu = new Menu(); MenuItem file = new MenuItem("File"); file.Submenu = filemenu; // submenu creation Menu imenu = new Menu(); MenuItem import = new MenuItem("Import"); import.Submenu = imenu; MenuItem inews = new MenuItem("Import news feed..."); MenuItem ibookmarks = new MenuItem("Import bookmarks..."); MenuItem imail = new MenuItem("Import mail..."); imenu.Append(inews); imenu.Append(ibookmarks); imenu.Append(imail); // exit menu item MenuItem exit = new MenuItem("Exit"); exit.Activated += OnActivated; filemenu.Append(import); filemenu.Append(exit); mb.Append(file); VBox vbox = new VBox(false, 2); vbox.PackStart(mb, false, false, 0); vbox.PackStart(new Label(), false, false, 0); Add(vbox); ShowAll(); } void OnActivated(object sender, EventArgs args) { Application.Quit(); } public static void Main() { Application.Init(); new SharpApp(); Application.Run(); } } ``` 子菜單創建。 ```cs Menu imenu = new Menu(); ``` 子菜單是`Menu`。 ```cs MenuItem import = new MenuItem("Import"); import.Submenu = imenu; ``` 它是菜單項的子菜單,它會登錄到頂級文件菜單。 ```cs MenuItem inews = new MenuItem("Import news feed..."); MenuItem ibookmarks = new MenuItem("Import bookmarks..."); MenuItem imail = new MenuItem("Import mail..."); imenu.Append(inews); imenu.Append(ibookmarks); imenu.Append(imail); ``` 子菜單有其自己的菜單項。 ![Submenu](https://img.kancloud.cn/b2/6d/b26deac0e10464b0f19b223814d3e049_258x228.jpg) 圖:子菜單 在 GTK# 編程庫的這一章中,我們展示了如何使用菜單。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看