Wenn ich es richtig verstanden habe, stellt das Tab Control standardmäßig keine Funktion bereit, über die sich angezeigte Registerseiten automatisiert per Drag & Drop umpositionieren zu lassen. Ich möchte das Tab Control deshalb so erweitern, das es diese Funktionalität automatisch bereitstellt. Ich bin auf der Suche nach einem Code-Snippoet, das diese Funktionalität anhand der erforderlichen Standardereignisse veranschaulicht. Hat jemand einen Link dafür?
Eine fertige Lösung kann ich dir nicht präsentieren aber eine Idee, wie man vorgehen könnte. In deiner abgeleiteten Tabcontrol Klasse registrierst du die notwendigen Maus-Events: (MouseDown / Up / Move) Mit der Funktion GetTabRect() kann man feststellen, ob man sich auf einem der Tab-Reiter befindet. Beim Loslassen der Maus kann man dann anhand der X-Koordinate feststellen, an welcher Position innerhalb der Reiter das Tab landen soll. Durch Umordnen der Tabpage Collection kann man die eigentliche Verschiebung realisieren. Im Mouse-move kann man ggf. die Reiter hervorheben, die als Verschiebeziele infrage kommen. Kleines Beispiel zur Verwendung von GetTabRect():
private void tabControl1_MouseMove(object sender, MouseEventArgs e) { for (int i = 0; i < this.tabControl1.TabPages.Count; i++) { if (this.tabControl1.GetTabRect(i).Contains(e.X, e.Y)) Trace.WriteLine(string.Format("tabpage {0} hit", this.tabControl1.TabPages.Text)); } } [/code]