Entwickler-Ecke

WinForms - DragDrop zwischen TreeViews


Christoph1972 - Fr 01.10.10 18:21
Titel: DragDrop zwischen TreeViews
Hallo Leute,

ich glaube ich brauche mal wieder eine findigen. Und zwar möchte ich eine List<TreeNode> via DragDrop zwischen TreeViews verschieben. Mit einzelnen Nodes ist es kein Problem. Ich habe ein Problem beim casten der Liste im DragDrop-Event.

So erstelle ich die Liste:

C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
void treeViewOpen_ItemDrag(object sender, ItemDragEventArgs e)
{
    List<TreeNode> listOfTreeNodes = new List<TreeNode>();
    foreach (TreeNode tn in treeViewOpenAnalysis.Nodes)
    {
        if (tn.Parent == null)//MainNode
        {
            if (tn.Checked)
                listOfTreeNodes.Add(tn);
        }
    }
    DoDragDrop(listOfTreeNodes, DragDropEffects.Move);
    //DoDragDrop(e.Item, DragDropEffects.Move);<---funktioniert
}

Vielen Dank schon mal!




C#-Quelltext
1:
2:
3:
4:
5:
6:
void treeViewData_DragDrop(object sender, DragEventArgs e)
{           
    List<TreeNode> listOfTreeNodes = e.Data.GetData("System.Collections.Generic.List<TreeNode>"as List<TreeNode>; <---hier hapert es 

    //TreeNode newSampleNode = e.Data.GetData("System.Windows.Forms.TreeNode") as TreeNode;<---funktioniert 
}


Kha - Fr 01.10.10 19:50

Warum benutzt du nicht die Überladung mit Type-Paremeter?


Christoph1972 - Fr 01.10.10 20:31

Jup, vielen Dank! Hatte ich zwar schon probiert, aber nichr gecastet, dachte das ist nicht nötig.....


C#-Quelltext
1:
 List<TreeNode> listOfTreeNodes = e.Data.GetData(typeof(List<TreeNode>)) as List<TreeNode>;                    


Kha - Sa 02.10.10 00:39

Tja, die Methode ist eben leider älter als Generics ;) .


Christoph1972 - Sa 02.10.10 07:58

Hätte ich trotzdem schneller selbst draufkommen können! Ich hatte aber auch meine schreiende Tocher auf dem Arm :zwinker:, da kann das schon mal vorkommen.