<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之旅 廣告
                # 菜單和工具欄 > 原文: [http://zetcode.com/gui/vbgtk/menustoolbars/](http://zetcode.com/gui/vbgtk/menustoolbars/) 在 Visual Basic GTK# 編程教程的這一部分中,我們將使用菜單和工具欄。 菜單欄是 GUI 應用中最常見的部分之一。 它是位于各個菜單中的一組命令。 在控制臺應用中,我們必須記住許多奧術命令,在這里,我們將大多數命令分組為邏輯部分。 這些公認的標準可進一步減少學習新應用的時間。 ## 簡單菜單 在第一個示例中,我們將創建一個帶有一個文件菜單的菜單欄。 該菜單將只有一個菜單項。 通過選擇項目,應用退出。 ```vb ' ZetCode Mono Visual Basic GTK# tutorial ' ' This program shows a simple ' menu. It has one action, which ' will terminate the program, when ' selected. ' ' author jan bodnar ' last modified May 2009 ' website www.zetcode.com Imports Gtk Public Class GtkVBApp Inherits Window Public Sub New MyBase.New("Simple menu") Me.InitUI Me.SetDefaultSize(250, 200) Me.SetPosition(WindowPosition.Center) AddHandler Me.DeleteEvent, AddressOf Me.OnDelete Me.ShowAll End Sub Private Sub InitUI Dim mb As New MenuBar Dim filemenu As New Menu Dim fileItem As New MenuItem("File") fileItem.Submenu = filemenu Dim exitItem As New MenuItem("Exit") AddHandler exitItem.Activated, AddressOf Me.OnActivated filemenu.Append(exitItem) mb.Append(fileItem) Dim vbox As New VBox(False, 2) vbox.PackStart(mb, False, False, 0) Me.Add(vbox) End Sub Sub OnActivated(ByVal sender As Object, _ ByVal args As EventArgs) Application.Quit End Sub Sub OnDelete(ByVal sender As Object, _ ByVal args As DeleteEventArgs) Application.Quit End Sub Public Shared Sub Main Application.Init Dim app As New GtkVBApp Application.Run End Sub End Class ``` 這是一個最小的菜單欄功能示例。 ```vb Dim mb As New MenuBar ``` `MenuBar`小部件已創建。 這是菜單的容器。 ```vb Dim filemenu As New Menu Dim fileItem As New MenuItem("File") fileItem.Submenu = filemenu ``` 創建頂層`MenuItem`。 ```vb Dim exitItem As New MenuItem("Exit") AddHandler exitItem.Activated, AddressOf Me.OnActivated filemenu.Append(exitItem) ``` 將創建出口`MenuItem`,并將其附加到文件`MenuItem`中。 ```vb mb.Append(fileItem) ``` 頂級`MenuItem`被附加到`MenuBar`小部件。 ```vb Dim vbox As New VBox(False, 2) vbox.PackStart(mb, False, False, 0) ``` 與其他工具包不同,我們必須自己照顧菜單欄的布局管理。 我們將菜單欄放入垂直框中。 ![Simple menu](https://img.kancloud.cn/25/dc/25dcdb9f0e7ee9771ee781c73e792a4f_258x228.jpg) 圖:簡單菜單 ## 子菜單 我們的最后一個示例演示了如何在 GTK# 中創建一個子菜單。 ```vb ' ZetCode Mono Visual Basic GTK# tutorial ' ' This program creates a submenu ' ' author jan bodnar ' last modified May 2009 ' website www.zetcode.com Imports Gtk Public Class GtkVBApp Inherits Window Public Sub New MyBase.New("Submenu") Me.InitUI Me.SetDefaultSize(250, 200) Me.SetPosition(WindowPosition.Center) AddHandler Me.DeleteEvent, AddressOf Me.OnDelete Me.ShowAll End Sub Private Sub InitUI Dim mb As New MenuBar Dim filemenu As New Menu Dim ifile As New MenuItem("File") ifile.Submenu = filemenu // submenu creation Dim imenu As New Menu Dim iimport As New MenuItem("Import") iimport.Submenu = imenu Dim inews As New MenuItem("Import news feed...") Dim ibookmarks As New MenuItem("Import bookmarks...") Dim imail As New MenuItem("Import mail...") imenu.Append(inews) imenu.Append(ibookmarks) imenu.Append(imail) // exit menu item Dim iexit As New MenuItem("Exit") AddHandler iexit.Activated, AddressOf Me.OnActivated filemenu.Append(iimport) filemenu.Append(iexit) mb.Append(ifile) Dim vbox As New VBox(False, 2) vbox.PackStart(mb, False, False, 0) Me.Add(vbox) End Sub Sub OnActivated(ByVal sender As Object, _ ByVal args As EventArgs) Application.Quit End Sub Sub OnDelete(ByVal sender As Object, _ ByVal args As DeleteEventArgs) Application.Quit End Sub Public Shared Sub Main Application.Init Dim app As New GtkVBApp Application.Run End Sub End Class ``` 子菜單創建。 ```vb Dim imenu As New Menu ``` 子菜單是`Menu`。 ```vb Dim iimport As New MenuItem("Import") iimport.Submenu = imenu ``` 它是菜單項的子菜單,它會登錄到頂級文件菜單。 ```vb Dim inews As New MenuItem("Import news feed...") Dim ibookmarks As New MenuItem("Import bookmarks...") Dim imail As New MenuItem("Import mail...") imenu.Append(inews) imenu.Append(ibookmarks) imenu.Append(imail) ``` 子菜單有其自己的菜單項。 ![Submenu](https://img.kancloud.cn/77/5e/775ea691f123e792c000e7526fae77f6_258x228.jpg) 圖:子菜單 ## 圖像菜單 在下一個示例中,我們將進一步探索菜單。 我們將圖像和加速器添加到我們的菜單項中。 `Accelerators`是用于激活菜單項的鍵盤快捷鍵。 ```vb ' ZetCode Mono Visual Basic GTK# tutorial ' ' This program shows image ' menu items, a shorcut and a separator ' ' author jan bodnar ' last modified May 2009 ' website www.zetcode.com Imports Gtk Public Class GtkVBApp Inherits Window Public Sub New MyBase.New("Image menu") Me.InitUI Me.SetDefaultSize(250, 200) Me.SetPosition(WindowPosition.Center) AddHandler Me.DeleteEvent, AddressOf Me.OnDelete Me.ShowAll End Sub Private Sub InitUI Dim mb As New MenuBar Dim filemenu As New Menu Dim ifile As New MenuItem("File") ifile.Submenu = filemenu Dim agr As New AccelGroup Me.AddAccelGroup(agr) Dim inew As New ImageMenuItem("gtk-new", agr) filemenu.Append(inew) Dim iopen As New ImageMenuItem(Stock.Open, agr) filemenu.Append(iopen) Dim isep As New SeparatorMenuItem filemenu.Append(isep) Dim iexit As New ImageMenuItem(Stock.Quit, agr) AddHandler iexit.Activated, AddressOf Me.OnActivated filemenu.Append(iexit) mb.Append(ifile) Dim vbox As New VBox(False, 2) vbox.PackStart(mb, False, False, 0) Me.Add(vbox) End Sub Sub OnActivated(ByVal sender As Object, _ ByVal args As EventArgs) Application.Quit End Sub Sub OnDelete(ByVal sender As Object, _ ByVal args As DeleteEventArgs) Application.Quit End Sub Public Shared Sub Main Application.Init Dim app As New GtkVBApp Application.Run End Sub End Class ``` 我們的示例顯示了具有三個子菜單項的頂級菜單項。 每個菜單項都有一個圖像和一個加速器。 退出菜單項的加速器處于活動狀態。 ```vb Dim agr As New AccelGroup Me.AddAccelGroup(agr) ``` 要使用加速器,我們創建一個全局`AccelGroup`對象。 稍后將使用。 ```vb Dim inew As New ImageMenuItem("gtk-new", agr) filemenu.Append(inew) ``` `ImageMenuItem`已創建。 圖片來自圖片庫。 GTK# 中有一個錯誤。 `Stock.New`與 Visual Basic `New`關鍵字沖突。 ```vb Dim isep As New SeparatorMenuItem filemenu.Append(isep) ``` 這些行創建一個分隔符。 它用于將菜單項放入邏輯組。 ![Image menu](https://img.kancloud.cn/1c/41/1c413307d8779d0f9f59046f76530c48_258x228.jpg) 圖:圖像 menu 菜單將我們可以在應用中使用的命令分組。 使用工具欄可以快速訪問最常用的命令。 ## 簡單的工具欄 接下來,我們創建一個簡單的工具欄。 ```vb ' ZetCode Mono Visual Basic GTK# tutorial ' ' This program creates a ' toolbar ' ' author jan bodnar ' last modified May 2009 ' website www.zetcode.com Imports Gtk Public Class GtkVBApp Inherits Window Public Sub New MyBase.New("Toolbar") Me.InitUI Me.SetDefaultSize(250, 200) Me.SetPosition(WindowPosition.Center) AddHandler Me.DeleteEvent, AddressOf Me.OnDelete Me.ShowAll End Sub Private Sub InitUI Dim toolbar As New Toolbar toolbar.ToolbarStyle = ToolbarStyle.Icons Dim newtb As New ToolButton("gtk-new") Dim opentb As New ToolButton(Stock.Open) Dim savetb As New ToolButton(Stock.Save) Dim sep As New SeparatorToolItem Dim quittb As New ToolButton(Stock.Quit) toolbar.Insert(newtb, 0) toolbar.Insert(opentb, 1) toolbar.Insert(savetb, 2) toolbar.Insert(sep, 3) toolbar.Insert(quittb, 4) AddHandler quittb.Clicked, AddressOf Me.OnClicked Dim vbox As New VBox(False, 2) vbox.PackStart(toolbar, False, False, 0) Me.Add(vbox) End Sub Sub OnClicked(ByVal sender As Object, _ ByVal args As EventArgs) Application.Quit End Sub Sub OnDelete(ByVal sender As Object, _ ByVal args As DeleteEventArgs) Application.Quit End Sub Public Shared Sub Main Application.Init Dim app As New GtkVBApp Application.Run End Sub End Class ``` 該示例顯示了一個工具欄和四個工具按鈕。 ```vb Dim toolbar As New Toolbar ``` `Toolbar`小部件已創建。 ```vb toolbar.ToolbarStyle = ToolbarStyle.Icons ``` 在工具欄上,我們僅顯示圖標。 沒有文字。 ```vb Dim opentb As New ToolButton(Stock.Open) ``` 創建帶有庫存圖像的`ToolButton`。 ```vb Dim sep As New SeparatorToolItem ``` 這是一個分隔符。 它可用于將工具欄按鈕放入邏輯組。 ```vb toolbar.Insert(newtb, 0) toolbar.Insert(opentb, 1) ... ``` 工具欄按鈕插入到工具欄小部件中。 ![Toolbar](https://img.kancloud.cn/03/00/0300c238fbee9d09c3d0a42d62fb492d_258x228.jpg) 圖:工具欄 ## 撤銷重做 以下示例演示了如何停用工具欄上的工具欄按鈕。 這是 GUI 編程中的常見做法。 例如,保存按鈕。 如果我們將文檔的所有更改都保存到磁盤上,則在大多數文本編輯器中,“保存”按鈕將被停用。 這樣,應用會向用戶指示所有更改都已保存。 ```vb ' ZetCode Mono Visual Basic GTK# tutorial ' ' This program disables/enables ' toolbuttons on a toolbar ' ' author jan bodnar ' last modified May 2009 ' website www.zetcode.com Imports Gtk Public Class GtkVBApp Inherits Window Private Dim clicks As Integer = 2 Private Dim undo As ToolButton Private Dim redo As ToolButton Public Sub New MyBase.New("Undo redo") Me.InitUI Me.SetDefaultSize(250, 200) Me.SetPosition(WindowPosition.Center) AddHandler Me.DeleteEvent, AddressOf Me.OnDelete Me.ShowAll End Sub Private Sub InitUI Dim toolbar As New Toolbar toolbar.ToolbarStyle = ToolbarStyle.Icons undo = New ToolButton(Stock.Undo) undo.Label = "Undo" redo = New ToolButton(Stock.Redo) redo.Label = "Redo" Dim sep As New SeparatorToolItem Dim quit As New ToolButton(Stock.Quit) toolbar.Insert(undo, 0) toolbar.Insert(redo, 1) toolbar.Insert(sep, 2) toolbar.Insert(quit, 3) AddHandler undo.Clicked, AddressOf Me.OnCount AddHandler redo.Clicked, AddressOf Me.OnCount AddHandler quit.Clicked, AddressOf Me.OnClicked Dim vbox As New VBox(False, 2) vbox.PackStart(toolbar, False, False, 0) Me.Add(vbox) End Sub Private Sub OnCount(ByVal sender As Object, _ ByVal args As EventArgs) If "Undo".Equals(sender.Label) clicks += 1 Else clicks -= 1 End If If clicks <= 0 undo.Sensitive = True redo.Sensitive = False End If If clicks >= 5 undo.Sensitive = False redo.Sensitive = True End If End Sub Sub OnClicked(ByVal sender As Object, _ ByVal args As EventArgs) Application.Quit End Sub Sub OnDelete(ByVal sender As Object, _ ByVal args As DeleteEventArgs) Application.Quit End Sub Public Shared Sub Main Application.Init Dim app As New GtkVBApp Application.Run End Sub End Class ``` 我們的示例從 GTK# 庫存資源創建撤消和重做按鈕。 單擊幾下后,每個按鈕均被停用。 按鈕顯示為灰色。 ```vb Private Dim clicks As Integer = 2 ``` `clicks`變量決定哪個按鈕被激活或禁用。 ```vb undo = New ToolButton(Stock.Undo) undo.Label = "Undo" redo = New ToolButton(Stock.Redo) redo.Label = "Redo" ``` 我們有兩個工具按鈕。 撤消和重做工具按鈕。 圖片來自庫存資源。 ```vb AddHandler undo.Clicked, AddressOf Me.OnCount AddHandler redo.Clicked, AddressOf Me.OnCount ``` 我們為兩個工具按鈕都插入了`Clicked`事件的方法。 ```vb If clicks <= 0 undo.Sensitive = True redo.Sensitive = False End If ``` 要激活小部件,我們將其`Sensitive`屬性設置為`true`。 要停用它,我們將其設置為`false`。 ![Undo redo](https://img.kancloud.cn/53/66/536694337f1199a7d7bf457d1d2d9898_258x228.jpg) 圖:撤銷和重做 在 Visual Basic 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>

                              哎呀哎呀视频在线观看