Ist es möglich, die Registerkarten in der WinForms TabControl
zur Laufzeit wie IE oder Firefox neu zu ordnen?
Links wie diese geben nicht Ich hoffe sehr.
Sicher, das ist möglich! Sie versuchen höchstwahrscheinlich, die Lösung zu kompliziert zu machen. Im Wesentlichen müssen Sie nur den Standard TabControl
ableiten und den Maus-Event-Handlern etwas Logik hinzufügen. Sie müssen nur überprüfen, welche Form der Benutzer gerade zieht und in der TabPages
Sammlung neu anordnen.
Es gibt ein paar komplette Lösungen online verfügbar:
Ich fand die Lösung , die ursprünglich von @Cody Grey gepostet wurde, größtenteils so, wie ich es wollte, aber ich habe es nicht getan. Ich sehe die Notwendigkeit, dass es so kompliziert ist.
Dies ist meine Vereinfachung, die durch Ableitung von TabControl implementiert wurde:
%Vor%Die Drag-and-Drop-APIs dienen eigentlich dazu, Dinge zwischen verschiedenen Anwendungen oder zumindest separaten Steuerelementen zu verschieben. Sie in diesem Fall zu verwenden ist Overkill.
Achte darauf, dass du Codys Antwort auch aufhebst, wenn du meine aufwertest, da sie auf seiner basiert.
Ich habe die Antwort von Jacob Stanley ein wenig erweitert. Auf diese Weise wird das Tauschen nicht allzu oft vorkommen. Dies ist besonders hilfreich für Tabs unterschiedlicher Größe. In diesem Fall würde die vorherige Lösung beim Ziehen sehr oft ausgetauscht werden.
Der Unterschied in der Benutzererfahrung besteht darin, dass Sie etwas weiter ziehen müssen, um die Registerkarte tatsächlich zu verschieben. Dies ähnelt jedoch der Tab-Neuanordnung in Browsern.
Außerdem habe ich beim Ziehen einen Handcursor hinzugefügt und die Doppelpufferung aktiviert.
%Vor%Tags und Links .net c# winforms tabpage tabcontrol