Нет фона для вставки корневого узлаC#

Место общения программистов C#
Anonymous
Нет фона для вставки корневого узла

Сообщение Anonymous »

У меня есть winform с TreeView, который состоит из нескольких корневых узлов. Мои данные не будут выглядеть хорошо с одним корневым узлом.
Я требую, чтобы у пользователя была возможность щелкать мышью, чтобы добавлять новые узлы в Treeview. Если пользователь щелкает узел в дереве, новый узел добавляется как дочерний узел выбранного узла. Если пользователь щелкнет пустое место под конечным узлом дерева, в дерево будет добавлен новый RootNode. Я использую событие MouseUp, чтобы определить, был ли щелчок по узлу дерева или по пустому пространству под последним узлом.

Код: Выделить всё

            TreeNode clickedNode = treeView1.GetNodeAt(e.X, e.Y);

if (clickedNode != null)
{
// User clicked node
clickedNode.Nodes.Add("New ChildNode");
}
else
{
// User clicked background
treeView1.Nodes.Insert(0, "New RootNode");
}
Это работает нормально, пока под TreeView не останется пустого места, по которому можно щелкнуть (и не появятся полосы прокрутки). Это связано с тем, что узел в TeeView состоит из всей горизонтальной линии, а не только из текстовой метки, что означает, что в элементе управления больше нет пустого места, на которое можно щелкнуть, чтобы создать корневой узел.
Изображение

Та же проблема возникает, если я использую перетаскивание для перемещения узлов. Как только новые добавленные узлы достигают нижней части дерева (и появляются полосы прокрутки), я не могу перетаскивать дочерние узлы из дерева, чтобы они стали корневыми узлами.
Если это возможно, достаточно пустой строки внизу TreeView.

Вернуться в «C#»