如何在Winforms ListView中获取资源管理器右键菜单?

时间:2010-02-21 23:20:30

标签: c# .net winforms listview explorer

我正在使用Winforms ListView来显示一些文件,但除了显示像explorer这样的文件之外,当你右键单击里面的项目时,我想拥有相同的浏览器右键菜单。

这可能吗?如何为ListView应用程序启用它?

3 个答案:

答案 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