Вот два возможных решения вашей проблемы. Первый основан больше на исходном коде, который я не был 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
В исходном коде вы зацикливание только через элементы родительского меню. В этом обновленном коде он ищет родительский элемент «Статус», а затем перебирает дочерние элементы, чтобы найти статус, который вам нужно проверить.
* просто дает мне ошибку * не является описанием проблемы. Какая * конкретная ошибка * дает вам? Эта информация доступна вам, и нет причин, по которым вы не должны включать ее в свой вопрос, чтобы у нас это было. Если вы позвоните в свою авторемонтную мастерскую и скажите * Мой автомобиль делает забавный шум. Как я могу это исправить? *, Они не собираются помогать без дополнительной информации о шуме. Если вы хотите, чтобы мы помогли вам, укажите данные, которые у вас есть; мы не можем видеть ваш экран или читать ваш ум от того места, где мы сидим. –
Извините, приятель, но меняю с * просто дает мне ошибку * к * просто ничего не дает * не обновление. Используйте отладчик и выясните, в чем проблема, и тогда вы можете спросить об этой проблеме. ** Если вы хотите, чтобы мы вам помогли, укажите данные, которые у вас есть. ** Если вы не можете этого сделать, вам необходимо предоставить [Минимальный, полный и проверенный пример] (http://stackoverflow.com/help/ mcve), чтобы мы могли воспроизвести проблему. –
Я изменяю это .. "Если ctl.Text = ListView1.SelectedItems.Item (0) .Text", и это ничего мне не дает ... просто как 2-й рис из вышеперечисленного..sir..если я выбираю элемент и listview и щелкните правой кнопкой мыши, чтобы открыть контекстное меню. Это ничего не дает. Надеюсь, что это понятно для u sir .. –