سؤال

So I have my code, and it's kind of working... It shows the contextmenu on the listview when I right click, but I don't think the select case is working, when I click on either edit or delete, nothing happens. Here's my code

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

Thank you!

هل كانت مفيدة؟

المحلول

The Select Case block isn't working because the text is "&edit" and "&delete". The & will appear as part of the Text property.

Note that if you are going to customize the ContextMenuHanndler function for every item that is clicked then a better strategy is to just have a different handler for each one

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

نصائح أخرى

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

Change the Case name from "Edit" to "&Edit" same as the declared name above..

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top