我正在使用Winforms ListView来显示一些文件,但除了显示像explorer这样的文件之外,当你右键单击里面的项目时,我想拥有相同的浏览器右键菜单。
这可能吗?如何为ListView应用程序启用它?
答案 0 :(得分:2)
我知道这样做的唯一方法是使用pinvoke和COM来做到这一点。我想,您想要的非托管API是SHCreateDefaultContextMenu()。完成互操作后(首先检查pinvoke.net),您可以为DEFCONTEXTMENU所需的所有其他内容执行互操作。这并不容易。欢迎来到PIDL的土地。
答案 1 :(得分:2)
我实际上无法通过右键单击显示自定义上下文菜单:Erratic Behavior from ContextMenu
我仍然略有不同:
private void lstModules_MouseDown(object sender , MouseEventArgs e)
{
hitTest = lstModules.HitTest(e.Location);
switch (e.Button)
{
case MouseButtons.Right:
if (hitTest != null && hitTest.Item != null)
{
// right clicking an item in the listview
selectedModule = hitTest.Item.Name;
lstModules.ContextMenuStrip = mnuContext_OptionsA;
}
else
{
// right clicking in white area of listview
lstModules.ContextMenuStrip = mnuContext_OptionsB;
}
break;
}
}
答案 2 :(得分:1)
您需要IContextMenu界面。另请参阅this very useful series。