ContextMenuStrip 菜單的提示

來源:互聯網
上載者:User

本人做了一個 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

    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

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.