none
ListBox で 右クリックしてアイテムをひとつ選択させたい RRS feed

  • 質問

  • おせわになります、ずっちと申します。

    現在、Visual Basic 2010 Express を用いて作成しております。

    Form上にあるListBoxを右クリックしてContextMenuStripを表示させているのですが、
    右クリックではアイテムの選択が変更されないことがわかりました。
    ContextMenuStripではListBoxで右クリックしたアイテムに対する処理を記述しようとしていました。

    右クリックでアイテムを選択させる方法をいろいろ考えていろいろ試してみたのですが、
    どれもうまくいきませんでした。

    どなたか良い方法はございませんでしょうか。
    最悪、無理だとわかればほかのコントロールを使用しようと思います。

    よろしくお願いいたします。

    2012年2月17日 8:24

回答

  • ListBoxのMouseUpイベントで以下のようにされてみてはいかがでしょうか?

    Private Sub listBox1_MouseUp(sender As Object, e As MouseEventArgs)
    	If e.Button = System.Windows.Forms.MouseButtons.Right Then
    		If listBox1.IndexFromPoint(e.Location) <> ListBox.NoMatches Then
    			listBox1.SelectedItem = listBox1.Items(listBox1.IndexFromPoint(e.Location))
    		End If
    	End If
    End Sub

    ★良い回答には回答済みマークを付けよう! わんくま同盟 MVP - Visual C# http://d.hatena.ne.jp/trapemiya/

    • 回答としてマーク ずっち 2012年2月21日 5:07
    • 回答としてマークされていない ずっち 2012年2月21日 5:07
    • 回答としてマーク ずっち 2012年2月21日 5:10
    2012年2月17日 9:28
    モデレータ

すべての返信

  • ListBoxのMouseUpイベントで以下のようにされてみてはいかがでしょうか?

    Private Sub listBox1_MouseUp(sender As Object, e As MouseEventArgs)
    	If e.Button = System.Windows.Forms.MouseButtons.Right Then
    		If listBox1.IndexFromPoint(e.Location) <> ListBox.NoMatches Then
    			listBox1.SelectedItem = listBox1.Items(listBox1.IndexFromPoint(e.Location))
    		End If
    	End If
    End Sub

    ★良い回答には回答済みマークを付けよう! わんくま同盟 MVP - Visual C# http://d.hatena.ne.jp/trapemiya/

    • 回答としてマーク ずっち 2012年2月21日 5:07
    • 回答としてマークされていない ずっち 2012年2月21日 5:07
    • 回答としてマーク ずっち 2012年2月21日 5:10
    2012年2月17日 9:28
    モデレータ
  • trapemiya様、回答ありがとうございました!

    クリックされた場所をどうにか取得し、そのポイントを選択させるのだろうと思っていたのですが、
    具体的な方法が考え付かず、見つけられませんでした。

    おかげさまで理想の動作をするようになりました!
    ありがとうございました!

    2012年2月21日 5:10