Fragensteller
Tabpage aktivieren, wenn Datei für DragDrop in Listview ausgewählt

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
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
-
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
-
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