Form1にこの2つのイベントがあります。
private void contextMenuStrip1_Opening(object sender, CancelEventArgs e)
{
//clear the menu and add custom items
contextMenuStrip1.Items.Clear();
contextMenuStrip1.Items.Add(string.Format("Edit - {0}", listBox1.SelectedItem.ToString()));
}
private void listBox1_MouseUp(object sender, MouseEventArgs e)
{
if (e.Button == System.Windows.Forms.MouseButtons.Right)
{
int index = listBox1.IndexFromPoint(e.Location);
if (index == -1) return;
contextMenuStrip1.Show(listBox1,listBox1.PointToClient(System.Windows.Forms.Cursor.Position));
}
}
デザイナには、ContextMenuStripとlistBoxコントロールがあります。
私がそれをする必要があるのは、listBox領域のどこかでマウスの右ボタンをクリックしても何もしないということです。しかし、listBoxで選択した項目だけをクリックすると、contextMenuStripが表示されます。listBoxで選択した項目の上/上にマウスを置いた場合のみ。
プログラムがすでに実行されている場合、最初の項目が選択されているので、プログラムを実行したら、選択した項目の上にマウスを移動して右クリックボタンを押すと機能する必要があります。選択したアイテムを使用していない場合は機能しません。つまり、マウスカーソルが選択したアイテムの上にある場合にのみ、右クリックが機能し、コンテキストメニューストリップが表示されます。
選択したアイテムの上にマウスを置いても、マウスの右ボタンをクリックすると機能します。