如何在Winforms ListView中获取资源管理器右键菜单?
我正在使用 Winforms ListView 来显示一些文件,但除了像资源管理器那样显示文件之外,我还希望在右键单击其中的项目时获得相同的资源管理器右键单击菜单。
这可能吗?如何为我的 ListView 应用程序启用它?
I am using a Winforms ListView to show some files, but other than showing the files like explorer does, I want to have the same explorer right click menu when you get when you right click an item inside.
Is this possible? How do I enable it for my ListView app?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
我知道执行此操作的唯一方法是使用 pinvoke 和 COM 来执行此操作。我认为您想要的非托管 API 是 SHCreateDefaultContextMenu() 。完成互操作后(首先检查 pinvoke.net),您可以对 DEFCONTEXTMENU。这并不容易。欢迎来到 PIDL 的土地。
The only way I know of to do this is to use pinvoke and COM to do it. The unmanaged API you want, I think, is SHCreateDefaultContextMenu(). Once you get the interop done (check pinvoke.net first), you can do the interop for all the other things required by DEFCONTEXTMENU. It won't be easy. Welcome to the land of PIDLs.
实际上,我在右键单击时无法显示自定义上下文菜单:来自的不稳定行为ContextMenu
我的实现仍然略有不同:
I was actually having trouble getting a custom context menu to show with a right click: Erratic Behavior from ContextMenu
I still implemented slightly different:
您将需要 IContextMenu 界面。另请参阅这个非常有用的系列。
You would need the IContextMenu interface. Also see this very useful series.