Vb.net 我需要“项目检入工具条”菜单项中的帮助

Vb.net 我需要“项目检入工具条”菜单项中的帮助,vb.net,toolstripitem,Vb.net,Toolstripitem,我在这里有一个专栏,我想做的是当我选择一个项目时 我希望上下文菜单中的项目根据列中的状态进行检查 这是我目前正在尝试的 Dim currentItem As ToolStripMenuItem = DirectCast(sender, ToolStripMenuItem) Dim parentItem = DirectCast(currentItem.OwnerItem, ToolStripMenuItem) For Each ctl As ToolStripMenuIte

我在这里有一个专栏,我想做的是当我选择一个项目时

我希望上下文菜单中的项目根据列中的状态进行检查

这是我目前正在尝试的

 Dim currentItem As ToolStripMenuItem = DirectCast(sender, ToolStripMenuItem)
    Dim parentItem = DirectCast(currentItem.OwnerItem, ToolStripMenuItem)
    For Each ctl As ToolStripMenuItem In parentItem.DropDownItems
        If TypeOf ctl Is ToolStripMenuItem Then
            If ctl.Text = ListView1.SelectedItems.Item(0).Text Then
                currentItem = DirectCast(ctl, ToolStripMenuItem)
                currentItem.Checked = True
            End If
        End If
    Next

但什么都没给我我怎么才能扭转局面?从昨晚开始,我们就一直在努力解决这个问题。提前tnx这里有两种可能的解决方案。第一个是基于您的原始代码,我无法100%确定您针对的是哪个事件,因此无法对其进行测试:

    Dim currentItem As ToolStripMenuItem = DirectCast(sender, ToolStripMenuItem)
    Dim parentItem = DirectCast(currentItem.OwnerItem, ToolStripMenuItem)
    For Each ctl As ToolStripMenuItem In parentItem.DropDownItems
        If ctl.Text = "Status" Then
            For Each dropctl As ToolStripMenuItem In ctl.DropDownItems
                If dropctl.Text = ListView1.SelectedItems.Item(0).Text Then
                    dropctl.Checked = True
                Else
                    dropctl.Checked = False ' Ensure that you uncheck a previously checked status
                End If
            Next
        End If
    Next
接下来是我用来测试此功能的实际代码。我使用上下文菜单的开始事件来实现这一点。如果您对不同的列或控件重复使用相同的上下文菜单,则此方法可能不适用,但如果不适用,则我建议使用此方法:

Private Sub ContextMenuStrip1_Opening(sender As Object, e As System.ComponentModel.CancelEventArgs) Handles ContextMenuStrip1.Opening
    If ListView1.SelectedItems.Count > 0 Then
        For Each ctl As ToolStripMenuItem In CType(sender, System.Windows.Forms.ContextMenuStrip).Items
            If ctl.Text = "Status" Then
                For Each dropctl As ToolStripMenuItem In ctl.DropDownItems
                    If dropctl.Text = ListView1.SelectedItems.Item(0).Text Then
                        dropctl.Checked = True
                    Else
                        dropctl.Checked = False ' Ensure that you uncheck a previously checked status
                    End If
                Next
            End If
        Next
    Else
        e.Cancel = True   ' Don't show the context menu if no row was clicked on
    End If
End Sub

在原始代码中,您只是在父菜单项之间循环。在这段更新的代码中,它查找父项“状态”,然后在子项中循环查找需要检查的状态。

只给我一个错误不是问题描述。它会给你什么具体的错误?这些信息对你是可用的,你没有理由不把它包括在你的问题中,这样我们也能得到它。如果你打电话给你的汽车修理店说我的车发出奇怪的噪音。我该怎么修呢?如果没有更多关于噪音的信息,他们是不会帮忙的。如果您希望我们帮助您,请提供您拥有的详细信息;从我们坐的地方看不到你的屏幕,也看不到你的心思。抱歉,伙计,但是从只给我错误改为什么都不给我不是更新。使用调试器,找出问题所在,然后可以询问该问题。如果您希望我们帮助您,请提供您的详细信息。如果不能这样做,则需要提供一个选项,以便我们可以重现问题。我更改此选项..“如果ctl.Text=ListView1.SelectedItems.Item(0.Text)”它什么也没有给我…就像上面的第二张图片一样..先生..如果我选择一个项目和列表视图,然后右键单击打开上下文菜单..它什么也没有给我..我希望你明白,先生..哇!a非常感谢,先生!啊啊..你救了我的命..因为现在我终于可以安睡了..从昨晚开始一直在努力..感谢上帝你带来了一位编程天使来帮助那些需要帮助的人..tnx tnx tnx