Меню в Winforms напоминает меню проводника папок - PullRequest
2 голосов
/ 19 марта 2011

Как создать меню в winforms, которое полностью напоминает меню, которое появляется на левой рамке в проводнике Windows, когда мы исследуем любую папку.Меню содержит узлы дерева и корневые узлы, которые появляются и исчезают при нажатии на символы + & -.

Ответы [ 2 ]

2 голосов
/ 19 марта 2011

Ну, это не меню, это вид дерева.Вы можете использовать древовидное представление WinForms, но сразу после установки оно не будет выглядеть точно так же, как древовидное представление Explorer.Вам нужно применить тему окна Проводника.

Вам нужно P / Invoke, чтобы вызвать SetWindowTheme, передавая дескриптор окна дерева и использовать «проводник» в качестве темы.

Вставьте следующий код в новый класс в вашем проекте, скомпилируйте и используйте этот пользовательский элемент управления вместо встроенного 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.

1 голос
/ 19 марта 2011

Вы можете иметь несколько корневых узлов в древовидной структуре WinForms:

treeView.Nodes.Add("Root 1");
treeView.Nodes.Add("Root 2");

Вместо приведенного выше текста они могут быть полными узлами с дочерними элементами.

...