2

何と呼ばれているのか、何を調べればよいのかわかりません。リストボックスと添付した ContentMenuStrip を使用していますlistBox1.ContextMenuStrip = contextMenuStrip1;

リストボックスのアイテムを右クリックして「削除」などを選択できるようにしたいと思います。今持っているものを使用して、リストボックスの任意の場所をクリックすると、現在選択されているアイテムの結果に適用されます。これは紛らわしく、エラーが発生しやすいものです。

マウスが上にある要素に右クリックを実際にマップし、要素上にない場合 (リストボックスの空のスペース) に右クリック メニューを表示しないようにするにはどうすればよいですか。

4

1 に答える 1

2

簡単な解決策 (あなたが要求したものとは完全には異なります) は、メニューを開く前に項目が選択されていることを確認することです。

これを行うには、イベントに登録し、ContextMenuStrip.Openingアイテムが選択されていない場合はキャンセルします。

もっと賢いものを考えたら、更新します:)

[編集]

OKクール、 にIndexFromPointメソッドがありListBoxます。マウスがアイテムの上にあるかどうかを判断するために使用できます! コードサンプルが必要かどうか教えてください。

[編集2]

わかりました、わかりました、どうしようもありませんでした..ほら、どうぞ:

void ContextMenuStrip_Opening(object sender, System.ComponentModel.CancelEventArgs e)
    {
        if (listBox1.IndexFromPoint(listBox1.PointToClient(Cursor.Position)) == -1)
            e.Cancel = true;
    }
于 2012-08-11T19:33:59.670 に答える