Урм, вы можете добавить несколько узлов на корневом уровне. то есть добавление чего-то вроде
treeView1.Nodes.Add("Hello 1").Nodes.Add("Hello 3");
treeView1.Nodes.Add("Hello 2").Nodes.Add("Hello 4");
делает это, по крайней мере, для меня.
EDIT:
Если вам действительно нужен корневой узел для обхода дерева (и, мне кажется, вы просто ленивы, потому что у вас нет еще 1 функции), вы можете использовать следующий код, по крайней мере, для .NET 2 (не проверено ни для чего другого). Обратите внимание, что Я НЕ РЕКОМЕНДУЮ ЭТОГО , но эй, вы просили об этом;)
TreeNode realRoot = (TreeNode)treeView1.GetType().InvokeMember("root", BindingFlags.GetField | BindingFlags.NonPublic | BindingFlags.Instance, null, treeView1, null);
Дочерние узлы realRoot по-прежнему будут возвращать null для своего родителя (именно так разработан код), но если вы должны иметь его для дальнейшего использования, тогда это будет работать:)