2017-11-08 8 views
0

내 vb.net 앱에서 전자 메일 주소를 많이 포함하는 목록 상자가 있습니다.컨텍스트 메뉴 작업을 위해 목록 상자에서 마우스 오른쪽 버튼으로 클릭 한 항목 가져 오기 - vb.net

연락처보기, 수정 및 제거 옵션이있는 목록 상자에 상황에 맞는 메뉴가 있습니다.

현재 listbox1.items의 어떤 항목을 마우스 오른쪽 버튼으로 클릭하여 컨텍스트 메뉴 작업에서 사용했는지 확인하는 방법에 대해 고민하고 있습니다. 예를 들어 사용자 오른쪽 클릭 '[email protected] THEITEMTHATWASRIGHTCLICKED을

listbox1.items.remove(THEITEMTHATWASRIGHTCLICKED) 

말을하지만 어떻게 내가 결정하는 것 '과 클릭은 그때 필요 삭제? 나는 오른쪽에서 왼쪽 버튼을 클릭하기 전에 항목을 클릭하면

내가 시도 ...

itemthatwasrightclicked = listbox1.SelectedIndex 

는, 나는 -1 반환 된 인덱스를 얻을. 항목을 먼저 클릭 한 다음 마우스 오른쪽 단추로 클릭하면 올바른 색인이 반환되므로 사용자가 처음 왼쪽 클릭하지 않고 마우스 오른쪽 단추를 클릭하면 해당 항목이 선택되지 않은 것처럼 보입니다.

나는 실종되었으므로 도움이 될 것입니다.

나는 이것이 단순해야한다고 생각합니다.

미리 감사드립니다. :)

답변

1

listbox 클래스는 MSDN에서이 메서드를 제공합니다. IndexFromPoint (Point) 메서드를 사용하려고합니다. 이 메서드를 호출하면 지정한 Point의 좌표에있는 목록 상자의 항목에 대한 인덱스가 반환됩니다. ListBox의 MouseDown 이벤트 내에서이를 구현하여 오른쪽 클릭 이벤트의 좌표를 캡처하고자 할 것입니다.

가장 기본적인 형태의 코드는 다음과 같습니다.

Private Sub ListBox1_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles ListBox1.MouseDown 
    If e.Button = MouseButtons.Right Then 
     ListBox1.SelectedIndex = ListBox1.IndexFromPoint(e.X, e.Y) 
    End If 
End Sub 
+0

정확히 내가 필요한 것입니다. 선생님 고마워요. 마우스 오른쪽 버튼을 클릭하면 항목이 선택되고 올바른 색인을 제공하고 여기에서 기능을 수행 할 수있게합니다. – John