2015-01-24 10 views
-1

я получил столбец here..what я пытаюсь сделать это, когда выбрать элементмне нужна помощь в проверке элемента в инструмент меню полосы

enter image description here

Я хочу, чтобы этот пункт в контексте меню будет проверка в соответствии со статусом в колонке

enter image description here

вот то, что им пытаются до сих пор

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 

, но просто ничего не дает. Как я могу это сделать? борется с этим с прошлой ночи ... заблаговременно

+1

* просто дает мне ошибку * не является описанием проблемы. Какая * конкретная ошибка * дает вам? Эта информация доступна вам, и нет причин, по которым вы не должны включать ее в свой вопрос, чтобы у нас это было. Если вы позвоните в свою авторемонтную мастерскую и скажите * Мой автомобиль делает забавный шум. Как я могу это исправить? *, Они не собираются помогать без дополнительной информации о шуме. Если вы хотите, чтобы мы помогли вам, укажите данные, которые у вас есть; мы не можем видеть ваш экран или читать ваш ум от того места, где мы сидим. –

+0

Извините, приятель, но меняю с * просто дает мне ошибку * к * просто ничего не дает * не обновление. Используйте отладчик и выясните, в чем проблема, и тогда вы можете спросить об этой проблеме. ** Если вы хотите, чтобы мы вам помогли, укажите данные, которые у вас есть. ** Если вы не можете этого сделать, вам необходимо предоставить [Минимальный, полный и проверенный пример] (http://stackoverflow.com/help/ mcve), чтобы мы могли воспроизвести проблему. –

+0

Я изменяю это .. "Если ctl.Text = ListView1.SelectedItems.Item (0) .Text", и это ничего мне не дает ... просто как 2-й рис из вышеперечисленного..sir..если я выбираю элемент и listview и щелкните правой кнопкой мыши, чтобы открыть контекстное меню. Это ничего не дает. Надеюсь, что это понятно для u sir .. –

ответ

2

Вот два возможных решения вашей проблемы. Первый основан больше на исходном коде, который я не был 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 

В исходном коде вы зацикливание только через элементы родительского меню. В этом обновленном коде он ищет родительский элемент «Статус», а затем перебирает дочерние элементы, чтобы найти статус, который вам нужно проверить.

+0

woooah! Большое спасибо, сэр! ааааа ... ты просто спасешь мою жизнь..коз теперь я могу наконец спать спокойно .. борется с этим с прошлой ночи. Этот бог увлекает ангела программирования, чтобы помочь нуждающимся ... tnx tnx tnx –