程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> .NET實例教程 >> ContextMenuStrip 菜單的使用技巧

ContextMenuStrip 菜單的使用技巧

編輯:.NET實例教程


本人做了一個 DataGridVIEw用來顯示數據庫中的字段,為了能夠讓用戶可以自定義要顯示的字段,特加上右鍵菜單功能運行效果圖如下:

運行效果圖

為了實現這個例子,必須完成下面要求:

1、能夠根據DataGridVIEw的列名動態生成菜單項
2、能夠選擇多個選項,保證菜單不消失
3、選擇完成後,根據菜單的選擇情況,控制DataGridVIEw的列的顯示

代碼如下:



  Private Sub DataGridView1_GotFocus()Sub DataGridView1_GotFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles DataGridVIEw1.GotFocus
        ''動態生成菜單項的過程
        With Me.DataGridVIEw1
            ''清除菜單項
            Me.ContextMenuStrip1.Items.Clear()
            ''添加標題
            Dim Menu_item1 As ToolStripMenuItem = New ToolStripMenuItem
            Menu_item1.Text = "選擇顯示的字段"
            Menu_item1.Enabled = False
            Me.ContextMenuStrip1.Items.Add(Menu_item1)
            ''添加分割線
            Dim fgx As ToolStripSeparator = New ToolStripSeparator
            Me.ContextMenuStrip1.Items.Add(fgx)
            ''根據DataGridVIEw的列名稱添加菜單項
            Dim i As Int16
            For i = 0 To .ColumnCount - 1
               
                Dim Menu_item As ToolStripMenuItem = New ToolStripMenuItem
                Menu_item.Text = .Columns(i).HeaderText
                Menu_item.Checked = .Columns(i).Visible
                Me.ContextMenuStrip1.Items.Add(Menu_item)
            Next
        End With
End Sub


    Private Sub ContextMenuStrip1_ItemClicked()Sub ContextMenuStrip1_ItemClicked(ByVal sender As System.Object, ByVal e As System.Windows.Forms.ToolStripItemClickedEventArgs) Handles ContextMenuStrip1.ItemClicked
        ''點擊菜單項時,菜單項的選定狀態取反
        ''被點擊的菜單項為 e.ClickedItem
        CType(e.ClickedItem, ToolStripMenuItem).Checked = Not CType(e.ClickedItem, ToolStripMenuItem).Checked

    End Sub
$False$


    Private Sub ContextMenuStrip1_Closing()Sub ContextMenuStrip1_Closing(ByVal sender As System.Object, ByVal e As System.Windows.Forms.ToolStripDropDownClosingEventArgs) Handles ContextMenuStrip1.Closing
        ''取消點擊選項就消失,這樣只有在菜單外的區域點擊菜單才會消失
        ''在此判斷引發時間的原因即“e.CloseReason”的值
        If e.CloseReason.ToString = "ItemClicked" Then
            e.Cancel = True
        End If
    End Sub

    Private Sub ContextMenuStrip1_Closed()Sub ContextMenuStrip1_Closed(ByVal sender As System.Object, ByVal e As System.Windows.Forms.ToolStripDropDownClosedEventArgs) Handles ContextMenuStrip1.Closed
        ''關閉菜單時

把選定的結果應用到DataGridVIEw
        Dim i As Int16
        For i = 2 To Me.ContextMenuStrip1.Items.Count - 1
            ''這裡我們需要設置被點擊的菜單項(ToolStripMenuItem)的Checked狀態,但是我們不能直接通過Me.ContextMenuStrip1.Items(i).Checked的方式操作,必須把它進行類型轉換,同樣的情況見“ContextMenuStrip1.ItemClicked”
            Me.DataGridVIEw1.Columns(Me.ContextMenuStrip1.Items(i).Text).Visible = CType(Me.ContextMenuStrip1.Items(i), ToolStripMenuItem).Checked()

        Next
    End Sub

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved