我不确定它叫什么或我应该查找什么。我正在使用附加的列表框和 ContentMenuStriplistBox1.ContextMenuStrip = contextMenuStrip1;
我想在我的列表框中右键单击项目并选择“删除”之类的内容。使用我现在拥有的内容,我可以单击列表框上的任何位置,并将结果应用于当前选定的项目。这令人困惑并且容易出错。
我如何使右键单击实际上映射到我的鼠标悬停的元素,并且当它不在元素上时不显示右键单击菜单(列表框中的空白区域)。
我不确定它叫什么或我应该查找什么。我正在使用附加的列表框和 ContentMenuStriplistBox1.ContextMenuStrip = contextMenuStrip1;
我想在我的列表框中右键单击项目并选择“删除”之类的内容。使用我现在拥有的内容,我可以单击列表框上的任何位置,并将结果应用于当前选定的项目。这令人困惑并且容易出错。
我如何使右键单击实际上映射到我的鼠标悬停的元素,并且当它不在元素上时不显示右键单击菜单(列表框中的空白区域)。
简单的解决方案(不完全是你要求的我知道的),只是确保在允许打开菜单之前选择一个项目。
您可以通过注册ContextMenuStrip.Opening
事件来完成此操作,如果没有选择任何项目,则取消它。
如果我想到更聪明的东西,我会更新:)
[编辑]
好的,酷,有一个IndexFromPoint
方法ListBox
。您可以使用它来确定鼠标是否在某个项目上!如果您需要代码示例,请告诉我。
[编辑2]
好吧,好吧,我忍不住了..给你:
void ContextMenuStrip_Opening(object sender, System.ComponentModel.CancelEventArgs e)
{
if (listBox1.IndexFromPoint(listBox1.PointToClient(Cursor.Position)) == -1)
e.Cancel = true;
}