如何在C#应用程序中显示Windows资源管理器上下文菜单?

18
我在我的应用程序中有一个文件列表,我想允许人们右键单击项目并显示Windows Explorer上下文菜单。我假设我需要使用IContextMenu接口,但我不确定从哪里开始。
3个回答

13

我写了一个库,可能可以帮助你。你可以使用库提供的控件,或者如果你不想那么做,查看代码可能会给你一个答案。

你可以在这里找到该库:http://gong-shell.sourceforge.net/

请告诉我这是否有帮助!


这个解决方案显然只适用于.NET 2.0 :( - user1618054

8

这很完美。虽然不是用C#编写的,但它解释了如何实现,这就是我所需要的。 - Jon Tackabury
链接已失效,但这是关于新博客的“初次尝试”。 - isanae

6

我发现了一篇非常好的Code Project文章,将所有内容都很好地封装到一个类中!

资源管理器上下文菜单

只需要以下代码片段即可:

// Sample code

ShellContextMenu ctxMnu = new ShellContextMenu();
FileInfo[] arrFI = new FileInfo[1];
arrFI[0] = new FileInfo(this.treeMain.SelectedNode.Tag.ToString());
ctxMnu.ShowContextMenu(arrFI, this.PointToScreen(new Point(e.X, e.Y)));

唯一令人讨厌的是它需要一个FileInfo[]或DirectoryInfo[]数组,尽管稍微修改源代码就可以让它接受一个FileSystemInfo[]数组。


那个库大多数情况下都能正常工作,但在某些情况下会因为委托被过早释放而崩溃,我似乎找不到原因所在。 - Janis F
如果CodeProject链接永久失效:https://pastebin.com/bfjX7ysX 请注意,我不得不将ShellHelper.HiWordShellHelper.LoWord更改为ulong,但除此之外,在.NET 4.6.1上它可以直接使用。 - test

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接