如何在 winforms 中创建一个菜单,该菜单与我们浏览任何文件夹时出现在 Windows 资源管理器左侧框架上的菜单完全相似。该菜单包含树节点和根节点,通过单击 + 和 - 符号来显示和消失。
最佳答案
嗯,这不是菜单,而是 TreeView 。您可以使用 WinForms TreeView ,但开箱后它看起来与 Explorer TreeView 并不完全相同。您需要应用资源管理器窗口主题。
您需要 P/Invoke 才能调用SetWindowTheme
传递树的窗口句柄并使用“explorer”作为主题。
将以下代码粘贴到项目中的新类中,编译并使用此自定义控件而不是内置 TreeView
控件。
public class NativeTreeView : System.Windows.Forms.TreeView
{
[DllImport("uxtheme.dll", CharSet = CharSet.Unicode)]
private extern static int SetWindowTheme(
IntPtr hWnd,
string pszSubAppName,
string pszSubIdList
);
protected override void CreateHandle()
{
base.CreateHandle();
SetWindowTheme(this.Handle, "explorer", null);
}
}
请注意,此技巧对于 ListView
控件的工作方式也完全相同。
关于c# - Winforms 中的菜单类似于文件夹资源管理器菜单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5360525/