2014-02-11 310 views
3

所以我有我的代码,它是一种工作...当我点击右键时,它显示listview上的contextmenu,但我不认为选择案例工作,当我点击在编辑或删除时,没有任何反应。这是我的代码ListView右键点击VB.Net

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 

谢谢!

回答

2

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 
不同的处理程序