2015-01-24 4 views
-1

도구 스트립 메뉴 항목에서 항목 체크에 도움이 필요 메뉴는 열의 상태에난 내가 할 노력하고있어 here..what 열을 가지고 내가</p> <p><img src="https://i.stack.imgur.com/Aj9Ne.jpg" alt="enter image description here"></p> <p>내가 맥락에서 항목을 원하는 항목을 선택할 때입니다

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 
01,235하려고 무엇에 따라 검사 할 수

하지만 나에게 아무것도주지 않습니다. 어떻게하면이 문제를 해결할 수 있습니까? 어제 밤부터 이것으로 어려움을 겪고 있습니다. 미리 사전에

+1

* 그냥 오류가 발생합니다. * 문제는 설명이 아닙니다. 어떤 * 특정 오류 * 당신을 줄 수 있습니까? 그 정보는 이용 가능하며, 질문에 포함해서는 안되므로 그 이유도 없습니다. 자동 정비소에 전화해서 다음과 같이 말하면 * 내 차는 우스운 소리를냅니다. 어떻게 해결할 수 있습니까? *, 노이즈에 대한 추가 정보 없이는 도움을주지 못할 것입니다. 우리가 당신을 도우려는 경우, 당신이 가진 세부 사항을 제공하십시오; 우리는 당신의 스크린을 보거나 우리가 앉아있는 곳에서 당신의 마음을 읽을 수 없습니다. –

+0

죄송합니다, 친구,하지만 *에서 변경하면 오류가 발생합니다 * 그냥 * 아무것도주지 않습니다 * 업데이트되지 않습니다. 디버거를 사용하여 문제가 어디에 있는지 파악한 다음 해당 문제에 대해 질문 할 수 있습니다. ** 우리가 당신을 도울 수 있기를 원한다면, 당신이 가지고있는 세부 사항을 제공하십시오. ** 그렇게 할 수 없다면 [최소한의 완전하고 검증 가능한 예]를 제공해야합니다 (http://stackoverflow.com/help/). mcve) 문제를 재현 할 수 있습니다. –

+0

나는 이것을 바꾼다 .. "만약 ctl.Text = ListView1.SelectedItems.Item (0). 텍스트"그리고 나에게 아무것도주지 말라. .. 위의 두번째 사진처럼 ... .. 내가 항목을 선택하면. listview 및 컨텍스트 메뉴를 열려면 마우스 오른쪽 단추로 클릭하십시오. 그것은 나에게 아무것도주지 않습니다 .. 나는 그것이 선생님을 위해 분명 희망입니다. –

답변

2

다음 두 가지 가능한 해결책이 있습니다.

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 

다음 나는이 기능을 테스트하는 데 사용되는 실제 코드입니다 : 첫 번째는 내가 그것을 테스트 할 수있는 당신이 그렇게 대상으로 한 이벤트 100 % 확실하지 않았다 원래 코드에 대한 자세한 기반으로 . 컨텍스트 메뉴의 Opening 이벤트를 사용하여이 작업을 수행했습니다. 당신이 다른 열이나 컨트롤 같은 상황에 맞는 메뉴를 재사용하는 경우에 당신을 위해 작동하지 않을 수 있지만, 그렇지 않으면 나는이 방법 추천 : 당신은 단지 부모 메뉴 항목을 통해 반복 된 원래의 코드에서

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! 거기에 많은 감사합니다! aaaah .. 너는 내 목숨을 구할 뿐이다. 이제는 마침내 평화롭게 지낼 수있다. 어젯밤부터 그걸로 어려움을 겪어왔다. 신이 필요로하는 사람들을 돕기 위해 천사를 데려왔다 .tnx tnx tnx –