Внедрение перетаскивания в Winforms с использованием элементов управления Treeview и Split

У меня есть форма, которая имеет 2 сплиттера. Один сплиттер разбивает форму по горизонтали на 2 столбца. Другой разбивает левый столбец на 2 строки.

В левом столбце, в верхней «строке», у меня есть древовидное представление. В правой колонке у меня есть просмотрщик изображений.

Я хочу поместить узел дерева в средство просмотра изображений и что-то с ним сделать.

Зритель называется «зритель». Древовидное представление называется «EntityTreeView».

Код выглядит следующим образом:

 private void viewer_DragEnter(object sender, DragEventArgs e)
    {
        e.Effect = DragDropEffects.Move;
    }

    private void viewer_DragDrop(object sender, DragEventArgs e)
    {
        TreeNode droppedNode;
        droppedNode = (TreeNode)e.Data.GetData("System.Windows.Forms.TreeNode");
        MessageBox.Show(String.Format("You dropped a node with text: {0}\n on the viewer at X:{1} Y:{2}", droppedNode.Text, e.X, e.Y), "Drag Drop Finished", MessageBoxButtons.OK, MessageBoxIcon.Information);
    }

    private void EntityTreeView_ItemDrag(object sender, ItemDragEventArgs e)
    {
        DoDragDrop(e.Item, DragDropEffects.Move);

    }

    private void EntityTreeView_DragDrop(object sender, DragEventArgs e)
    {
        e.Effect = DragDropEffects.Move;
    }


    private void EntityTreeView_DragEnter(object sender, DragEventArgs e)
    {
        e.Effect = DragDropEffects.None;
    }

Однако всякий раз, когда я беру узел дерева и начинаю его перетаскивать, он сразу же показывает значок «Нет» (т. е. знак «не курить»... кружок с косой чертой, как бы он ни назывался).

Любая идея, что я делаю неправильно?

Заранее благодарю за любую помощь.


person mgerety    schedule 12.06.2009    source источник
comment
Установлено ли для свойства AllowDrop значение true для всех соответствующих элементов управления?   -  person NascarEd    schedule 12.06.2009


Ответы (2)


Ваш код пока выглядит нормально. Что вам нужно сделать, так это установить для свойства AllowDrop в средстве просмотра значение true.

person Vincent McNabb    schedule 12.06.2009
comment
Спасибо. Это была проблема, я не знаю, как я проглядел это. - person mgerety; 12.06.2009

Вам нужно установить e.Effect в событии DragEnter на DragDropEffects.Move.

private void EntityTreeView_DragEnter(object sender, DragEventArgs e)
{
    e.Effect = DragDropEffects.Move    
}
person Simon Hutton    schedule 12.06.2009