2017-11-08 9 views
0

私のvb.netアプリケーションでは、たくさんの電子メールアドレスを含むリストボックスがあります。コンテキストメニューのアクションのためにリストボックス内で右クリックしたアイテムを取得する - vb.net

連絡先の表示、変更、削除のオプションを持つリストボックスにコンテキストメニューがあります。

私は現在、コンテキストメニューアクションで使用するためにユーザーがlistbox1.itemsのどの項目を右クリックしたかを判別する方法についていません....だから、たとえば、ユーザーの右クリック'[email protected] 'をクリックして削除します。

listbox1.items.remove(THEITEMTHATWASRIGHTCLICKED) 

しかし、THEITEMTHATWASRIGHTCLICKEDはどのようにして決められますか?

私は...

itemthatwasrightclicked = listbox1.SelectedIndex 

を試してみました。しかし、私は右、左クリックする前に、項目をクリックした場合、私は-1が返さインデックスを取得します。最初にアイテムをクリックしてから右クリックすると正しいインデックスが返されますので、ユーザが最初に左クリックすることなく右クリックするとアイテムが選択されないように見えます。

私は紛失しており、助けに感謝しています!

私はこれが何か簡単であるべきだと感じます。

ありがとうございます! :)

答えて

1

リストボックスクラスは、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

関連する問題