列表框中项目的菜单?

时间:2012-08-11 19:19:18

标签: winforms user-interface contextmenu

我不确定它叫什么或我应该查找什么。我正在使用我附加listBox1.ContextMenuStrip = contextMenuStrip1;

的列表框和ContentMenuStrip

我希望我的列表框中的项目能够右键单击并选择“删除”之类的内容。使用我现在拥有的内容,我可以点击列表框中的任意位置,然后将结果应用于当前所选项目。这令人困惑,容易出错。

如何让右键实际映射到我的鼠标结束的元素,当它不在元素上时(列表框中的空白区域)不显示右键菜单。

1 个答案:

答案 0 :(得分:2)

简单的解决方案(不完全是您所知道的),只是为了确保在允许菜单打开之前选择了一个项目。

您可以通过注册ContextMenuStrip.Opening事件来执行此操作,如果未选择任何项目则取消该事件。

如果我想到更聪明的东西,我会更新:)

[编辑]

好的很酷,IndexFromPoint上有一个ListBox方法。您可以使用它来确定鼠标在项目上方!如果您需要代码示例,请告诉我。

[EDIT2]

好的,好的,帮不了自己..你走了:

void ContextMenuStrip_Opening(object sender, System.ComponentModel.CancelEventArgs e)
    {
        if (listBox1.IndexFromPoint(listBox1.PointToClient(Cursor.Position)) == -1)
            e.Cancel = true;
    }