none
Tabpage aktivieren, wenn Datei für DragDrop in Listview ausgewählt RRS feed

  • Frage

  • Hallo Leute,

    ich habe in meinem Programm eine DragDrop-Möglichkeit für ein Listview eingerichtet, um Dateien zu verwalten.

    Dafür habe ich ein vorgelagertes Tabpage-Control, welches die Verzeichnis darstellt und darunter das ungebundene Listview eingesetzt. Wähle ich jetzt also ein Tabpage aus, werden alle Dateien in diesem Verzeichnis im Listview angezeigt.

    Soweit, so gut.

    Nun möchte ich, dass bei einer DragDrop-Aktion aus Windows oder aus dem Listview beim rüberfahren über die Tabpages, die TabPage ausgewählt wird, über die sich die Maus mit der DragDrop-Aktion befindet. Also ein dynamisches umschalten.

    Ich habe aber so gar keine Ahnung wie ich das bewerkstelligen soll.

    Kann mir einer vielleicht einen Tip geben?

    Vielen Dank im Voraus.

    Gruß Ahmed

    Samstag, 15. September 2018 17:14

Alle Antworten

  • Hi Ahmed,
    wenn Du noch mit den alten Windows Forms arbeitest, dann nutze das MouseMove, um mit der Mausbewegung den Reiter umzuschalten, z.B. so:

      Private Sub TabControl1_MouseMove(sender As Object, e As MouseEventArgs) Handles TabControl1.MouseMove
        Dim mouseRect As New Rectangle(e.X, e.Y, 1, 1)
        For i = 0 To TabControl1.TabCount - 1
          If TabControl1.GetTabRect(i).IntersectsWith(mouseRect) Then
            TabControl1.SelectedIndex = i
            Exit Sub
          End If
        Next
      End Sub


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

    • Als Antwort vorgeschlagen Peter Fleischer Samstag, 15. September 2018 17:58
    Samstag, 15. September 2018 17:54
  • Hallo Peter,

    das hatte ich schon ausprobiert bzw. eine ähnliche Funktion habe ich für eine Anzeige eines Tooltips implementiert.

    Der Tab-Reiter soll aber nur dann wechseln, wenn auch eine linke Maustaste gedrückt ist (DragDrop-Aktion) und da reagiert das Control aber nicht. Auch nicht wenn ich es auf AllowDrop umschalte.

    Folgendes möchte ich:

    Während einer DragDrop-Aktion soll sich der Tabreiter automatisch jeweils wenn die Maus sich darüber befindet, ausgewählt werden, damit ich die Drop-Aktion auf das Listview vornehme. Und dieser Tab-Reiterwechsel bekomme ich verflixt einfach nicht hin.

    Gruß A. Martens

    Samstag, 15. September 2018 18:19
  • Hallo Leute,

    ich habe festgestellt, dass das TabControl ja ein DragOver-Event hat und damit kann ich zumindest feststellen, dass über den Tab-Pages eine DragOver-Aktion durchgeführt wird.

    Nun habe ich noch zwei Fragen:

    1. Wie kann ich im DragOver-Event im TabControl das Mouse-Icon entsprechend ändern?

    Derzeit wird mir immer das Icon für keine Drag&Drop-Aktion angezeigt.

    2. Wie kann ich im DragOver-Event feststellen, über welchem Tab-Page sich die Maus befindet?

    Folgende Funktion von Peter (s.o.) verwende ich im MouseMove-Event, aber das führt zu keinem Ergebnis.

    Private Sub TabUnterverzeichnis_DragOver(sender As Object, e As DragEventArgs) Handles TabUnterverzeichnis.DragOver
            Dim mouseRect As New Rectangle(e.X, e.Y, 1, 1)
            For i = 0 To TabUnterverzeichnis.TabCount - 1
                If TabUnterverzeichnis.GetTabRect(i).IntersectsWith(mouseRect) Then
                    TabUnterverzeichnis.SelectedIndex = i
                    Exit Sub
                End If
            Next End Sub

    Ich hoffe jemand hat eine Idee für mich.

    Gruß Ahmed

    Sonntag, 16. September 2018 15:28