DragDrop pomiędzy dwoma UserControler

0

Witam wszystkich.
Mój problem polega na tym, że mam dwa UserControler'y (w jednym treeview w drugim listbox). Chciałbym zrobić tak aby z jednego kontenera UserControler(z treeview) przekazać do drugiego string'a (tego z listbox'em) za pomocą zdarzenia DragDrop. Niestety ciągle nie mogę sobie poradzić z tym problemem. Udało mi się zrobić coś podobnego gdy listbox nie był w kontenerze UserControler ale niestety nie wiem jak poradzić sobie gdy listbox'a trzeba umieścić w kontenerze.
Za wszelkie informację z góry dzięki
Może dorzucę trochę kodu.

public partial class ListBoxControl : DevExpress.XtraEditors.XtraUserControl
    {
        public ListBoxControl()
        {
            InitializeComponent();
        }

        IDataObject data = null;

        public void listBoxControl1_DragDrop(object sender, DragEventArgs e)
        {
            data = e.Data;
            TreeListNode node = data.GetData(typeof(TreeListNode)) as TreeListNode;
            if (node != null)
            {
                string dragString = "";
                dragString += node.GetDisplayText(node.Id);
                listBoxControl1.Items.Add(dragString);
            }
        }

        public void listBoxControl1_DragEnter(object sender, DragEventArgs e)
        {
            if (e.Data != null)
                e.Effect = DragDropEffects.All;

        }
    }
public partial class TreeGroupFieldComponent : DevExpress.XtraEditors.XtraUserControl
    {
        public TreeGroupFieldComponent()
        {
            InitializeComponent();
            fieldsGroupAndField.OptionsBehavior.DragNodes = true;
            //tutaj jest uzupełnienie treelist
        }

        public void ZmienUstawienieDropaDrag(bool x)
        {
            fieldsGroupAndField.OptionsBehavior.DragNodes = x;
        }

    }
0

ale dokladnie o co chodzi, skoro raz ci sie udalo, jaki masz problem w innym przypadku? dostep do kontrolki zrodlowej?

0

Problem polega na tym, że program wrzuca mi pustego string'a do listBoxa

0

Działa. Doszedłem dlaczego.

data = e.Data;
            TreeListNode node = data.GetData(typeof(TreeListNode)) as TreeListNode;
            if (node != null)
            {
                string dragString = "";
                dragString += node.GetDisplayText(0);
                listBoxControl1.Items.Add(dragString);

Rozwiązanie niezbyt piękne no ale...

Problem się pojawi, gdy treeList będzie miał więcej kolumn. Można owszem zrobić wartość na sztywno ale to nie będzie eleganckie rozwiązanie.

0

zle zastosowales node.GetDisplayText(node.Id)

GetDisplayText przyjmuje columne, a nie id wezla

http://www.devexpress.com/Help/?document=XtraTreeList/DevExpressXtraTreeListNodesTreeListNode_GetDisplayTexttopic.htm

0

Dokładnie. Za późno to zauważyłem. Dzięki za zainteresowanie

1 użytkowników online, w tym zalogowanych: 0, gości: 1