4

我正在使用 Winforms ListView 来显示一些文件,但除了像资源管理器那样显示文件之外,当你右键单击里面的项目时,我希望拥有相同的资源管理器右键菜单。

这可能吗?如何为我的 ListView 应用启用它?

4

3 回答 3

2

我实际上无法通过右键单击来显示自定义上下文菜单:来自 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;
        }
    }
于 2010-02-22T00:47:02.977 回答
2

我知道这样做的唯一方法是使用 pinvoke 和 COM 来做到这一点。我认为,您想要的非托管 API 是SHCreateDefaultContextMenu()一旦完成互操作(首先检查 pinvoke.net),您就可以对DEFCONTEXTMENU所需的所有其他事情进行互操作。这并不容易。欢迎来到 PIDL 的土地。

于 2010-02-21T23:44:45.303 回答
1

您将需要IContextMenu接口。也看到这个非常有用的系列

于 2010-12-13T04:05:56.687 回答