none
DragDrop mit TreeViewItem RRS feed

  • Frage

  • Hallo!

    Ich habe ein TreeView und möchte per DragDrop den Text eines TreeViewItems in eine TextBox übertragen.

    Im MouseDown-Event des TextBlockes des TreeViewItems löse ich das DragDrop aus:

     
    private void tblTV_SPALTEN_MouseDown(object sender, System.Windows.Input.MouseButtonEventArgs e)
    {
        if (sender.GetType() == typeof(System.Windows.Controls.TextBlock))
        {
            // if ((new TimeSpan(e.Timestamp)).TotalSeconds > 1 )
    
            DataObject datDD = new DataObject(typeof(string), ((System.Windows.Controls.TextBlock)sender).Text);
            DragDrop.DoDragDrop(tvDBTabellen, datDD, DragDropEffects.Copy);
                    
        }
    
    }

    Nun habe ich das Problem, dass bereits durch die Auswahl des TreeViewItems ein DoDragDrop ausgelöst wird und beim  ziehen des TreeViewItems in die TextBox das TreeViewItem erneut angeklickt (und gehalten) wird um den DragDrop-Vorgang auszulösen. Als Ergebnis habe ich nun den Text immer doppelt in der TextBox.

    Kann ich irgendwie abfragen, ob die linke Maus-Taste länger gedrückt wird, um erst jetzt die DragDrop()-Methode aufzurufen??? Oder kann ich den vorherigen DragDrop-Wert immer erst löschen, bevor ich ein erneutes DragDrop auslöse?

    Oder wird das anders gelöst?

    Mittwoch, 18. April 2018 13:58

Antworten

  • Hi Fred,
    du kannst Dir die ID des geklickten Elementes merken. Jeder neue Klick überschreibt dann die ID des vorherigen Klicks. Wenn dann der Drop-Vorgang läuft, holst Du Dir über die ID das Datenobjekt des entsprechenden Knotens und nimmst daraus den gewünschten Inhalt, z.B. den Text, der im Kn oten angezeigt wird.

    --
    Viele Grüsse
    Peter Fleischer (ehem. MVP)
    Meine Homepage mit Tipps und Tricks

    • Als Antwort markiert perlfred Donnerstag, 19. April 2018 06:21
    Mittwoch, 18. April 2018 14:50

Alle Antworten

  • Hi Fred,
    du kannst Dir die ID des geklickten Elementes merken. Jeder neue Klick überschreibt dann die ID des vorherigen Klicks. Wenn dann der Drop-Vorgang läuft, holst Du Dir über die ID das Datenobjekt des entsprechenden Knotens und nimmst daraus den gewünschten Inhalt, z.B. den Text, der im Kn oten angezeigt wird.

    --
    Viele Grüsse
    Peter Fleischer (ehem. MVP)
    Meine Homepage mit Tipps und Tricks

    • Als Antwort markiert perlfred Donnerstag, 19. April 2018 06:21
    Mittwoch, 18. April 2018 14:50
  • Hallo Peter!

    Die Zuordnung des Textes über die TreeViewItem-ID funktioniert.

    Vielen Dank für deine Hilfe!

    Fred.

    Donnerstag, 19. April 2018 06:25