C#从注册表中的路径递归填充树视图

时间:2015-10-22 14:38:47

标签: c# recursion path treeview registry

问题:如何使用C#将多个路径值作为从注册表到树视图节点的字符串递归填充我的树视图?

我想做什么: Recursivly使用我的list []数组中收集的每个注册表值中的字符串值填充我的treeView1,该列表也用于listBox(listBox1),并且仅从注册表中添加非空值。我非常感谢有任何这方面的帮助或意见。

如何将路径加载到treeView1

private void PopulateTreeView()
        {
            try
            {
                TreeNode rootNode;
                NodeInfo nInfo;

                string path = Global.GetStartUpPath();
                DirectoryInfo info = new DirectoryInfo(path);
                if (info.Exists)
                {
                    rootNode = new TreeNode(info.Name, 3, 3);
                    rootNode.Name = info.Name;

                    nInfo = new NodeInfo(NodeInfo.Types.Root, info.FullName);
                    rootNode.Tag = nInfo;

                    GetDirectories(info, rootNode);
                    treeView1.Nodes.Add(rootNode);
                    treeView1.SelectedNode = rootNode;
                }

            }

我如何设置路径

public static void setStartUpPath(string path)
        {
            //Open the registry key
            RegistryKey rk1 = Registry.CurrentUser.OpenSubKey(@"Software", true);
            //Create a subkey, if not exist
            RegistryKey sk1 = rk1.CreateSubKey(@"Example\Test\Path");

            sk1.SetValue("StartupPath", path);

            sk1.Close();

            _startUpPath = path;
        }

我是如何得到的

public static string GetStartUpPath()
    {
        if ( (_startUpPath != null) && (_startUpPath != string.Empty) )
                return _startUpPath;           
        //Check registry
        else
        {
            //Open the registry key
            RegistryKey rk1 = Registry.CurrentUser.OpenSubKey(@"Software\Example\Test\Path", true);
            if (rk1 == null)
                return string.Empty;

            _startUpPath = (string)rk1.GetValue("StartupPath");
            rk1.Close();
            return _startUpPath;
        }


    }

(如果有帮助)我将路径输入列表框的方法

public static string[] GetPaths()
        {
            //Open the registry key
            RegistryKey rk1 = Registry.CurrentUser.OpenSubKey(@"Software\Example\Test\Path\List", true);
            if (rk1 == null)
                return null;

            string[] list = new string[rk1.ValueCount];


            for (int i = 0; i < rk1.ValueCount; i++)
            {
                list[i] = rk1.GetValue(i.ToString()).ToString();
            }
            rk1.Close();
            return list;

        }

1 个答案:

答案 0 :(得分:0)

自己解决了。对于其他来这里寻找答案的人来说,这就是我解决树视图的方式。

CKEDITOR.on( 'instanceReady', function( ev )
{
    var editor = ev.editor;
    var dataProcessor = editor.dataProcessor,
    htmlFilter = dataProcessor && dataProcessor.htmlFilter;

    htmlFilter.addRules(
    {
        elements:
        {
            $: function (element) {
                var parent = element.parent;

                if (element.name == 'p') {
                    if (parent && parent.name.toLowerCase()=='blockquote') {
                        element.name="pre";
                    } 
                } 

                return element;
            }
        }
    });

});