我在 Form1 中有这两个事件:
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。仅当鼠标在列表框中的选定项目上方/上时。
当我的程序正在运行时,第一个项目已被选中,因此我需要在运行程序后将鼠标移到所选项目上方并右键单击按钮,它将起作用。如果我不在所选项目上,它将不起作用。我的意思是只有当鼠标光标位于所选项目上方时,右键单击才会起作用并显示上下文菜单条。
如果我现在将鼠标放在所选项目上,如果我单击鼠标右键,则不会将鼠标移到所选项目上,它会起作用。