【问题标题】:ListView right clicking VB.NetListView右键单击VB.Net
【发布时间】:2014-03-08 13:52:59
【问题描述】:

所以我有我的代码,它有点工作......当我右键单击时它会在列表视图上显示上下文菜单,但是当我单击编辑或删除时,我认为选择案例不起作用,什么都没发生。这是我的代码

Private Sub Form1_Load(sender As Object, e As EventArgs) Handles Me.Load
    ComboBox1.SelectedItem = "TRUE"
    Dim ctx As New ContextMenu

    Dim i1 As New MenuItem("&Edit")
    Dim i2 As New MenuItem("&Delete")

    AddHandler i1.Click, AddressOf ContextMenuHandler
    AddHandler i2.Click, AddressOf ContextMenuHandler

    ctx.MenuItems.Add(i1)
    ctx.MenuItems.Add(i2)

    Me.ListView1.ContextMenu = ctx
End Sub

Private Sub ContextMenuHandler(ByVal Sender As Object, ByVal e As EventArgs)
    Dim mi As MenuItem = DirectCast(sender, MenuItem)

    Select Case mi.Text.ToLower()
        Case "edit"
            ListViewToText()
        Case "delete"
            Try
                If ListView1.SelectedItems.Count > 0 Then
                    ListView1.Items.Remove(ListView1.SelectedItems(0))
                End If
            Catch ex As Exception

            End Try
    End Select
End Sub

谢谢!

【问题讨论】:

    标签: vb.net winforms listview edit


    【解决方案1】:

    Select Case 块不起作用,因为文本是 "&edit""&delete"& 将作为Text 属性的一部分出现。

    请注意,如果您要为每个单击的项目自定义 ContextMenuHanndler 函数,那么更好的策略是为每个项目设置一个不同的处理程序

    AddHandler i1.Click, AddressOf EditHandler
    AddHandler i2.Click, AddressOf DeleteHandler
    
    Private Sub EditHandler(ByVal Sender As Object, ByVal e As EventArgs)
        ListViewToText()
    End Sub
    
    Private Sub DeleteHandler(ByVal Sender As Object, ByVal e As EventArgs)
        Try
            If ListView1.SelectedItems.Count > 0 Then
                ListView1.Items.Remove(ListView1.SelectedItems(0))
            End If
        Catch ex As Exception
    
        End Try
    End Sub
    

    【讨论】:

      【解决方案2】:
      Dim i1 As New MenuItem("&Edit")
      Dim i2 As New MenuItem("&Delete")
      
      Private Sub ContextMenuHandler(ByVal Sender As Object, ByVal e As EventArgs)
          Dim mi As MenuItem = DirectCast(sender, MenuItem)
      
          Select Case mi.Text.ToLower()
              Case "edit"
                  ListViewToText()
              Case "delete"
                  Try
                      If ListView1.SelectedItems.Count > 0 Then
                          ListView1.Items.Remove(ListView1.SelectedItems(0))
                      End If
                  Catch ex As Exception
      
                  End Try
          End Select
      

      将案例名称从“Edit”更改为“&Edit”,与上面声明的名称相同..

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-09-17
        • 2012-11-06
        • 1970-01-01
        • 2011-01-11
        • 2020-11-21
        相关资源
        最近更新 更多