День добрый.
Делаю перемещение узла в дереве TreeView (нужно взять выбранный нод и сдвинуть его вверх, т.е. поменять местами с нодом что над ним):
private void bUp_Click(object sender, EventArgs e)
{
Console.Out.WriteLine("List of nodes:");
// СПИСОК_1
foreach (TreeNode nd in treeMain.Nodes)
{
Console.Out.WriteLine(nd.Text);
}
TreeNode node = treeMain.SelectedNode.PrevNode;
TreeNode nodeS = treeMain.SelectedNode;
int n = treeMain.SelectedNode.Index;
if (treeMain.SelectedNode.Parent == null)
{
// ОСНОВНОЙ БЛОК
if (n > 0)
{
treeMain.Nodes[n] = node;
treeMain.Nodes[n - 1] = nodeS;
treeMain.Invalidate();
treeMain.Refresh();
Console.Out.WriteLine("List of nodes:");
// СПИСОК_2
foreach (TreeNode nd in treeMain.Nodes)
{
Console.Out.WriteLine(nd.Text);
}
}
}
else
{
// ЭТОТ БЛОК НЕЗНАЧИМ, ОТЛАДКА ИДЕТ НА ОСНОВНОМ БЛОКЕ
if (n > 0)
{
treeMain.SelectedNode.Parent.Nodes[n] = node;
treeMain.SelectedNode.Parent.Nodes[n - 1] = nodeS;
}
}
} |
Работаю с деревом, где есть узлы только верхнего уровня с именами q, w, e, r, t, y, u.
Получается такая картина. Блок СПИСОК_1 выводит список q, w, e, r, t, y, u. Выбираю узел 'e' (неважно что именно 'e', просто для примера). двигаю его вверх (т.е. для него вызывается этот обработчик). СПИСОК_2 выводит правильный список: q, e, w, r, t, y, u. Но дерево отображается вот так: q, e, w, w, e, r, t, y, u.
То есть модель дерева меняется нормально, но почему-то отрисовывается что-то не то.
В чем может быть дело?
Спасибо.
24.03.08 13:28: Перенесено модератором из '.NET' — AndrewVK |