Déplacement des Tabpages d'un TabControl à l'aide de la souris
Allo,
Après plusieurs tentatives infructueuses dans mon code. Je tente ma chance sur le forum.
Résumé de la situation. Dans un formulaire, j'ai un TabControl avec 2 TabPages. Je veux pouvoir déplacer un table page dans un nouveau formulaire grâce au bouton de droite de la souris. Ce que je fais sans problème. Lorsque je ferme le formulaire créé précédemment. je veux que son contenu donc son tabPages s'ajoute au Tabcontrol du premier formulaire. Ce que je fais aussi sans problème.
La ou cela se gâte, c'est lorsque je veux faire le même déplacement décrit précédemment pour une 2e fois. Quand j'ai fermé mon formulaire la 1ere fois, les variables ont naturellement être détruite mais j'ai pu recopié le contenu dans le tabcontrol. J'ai tenté de les déclarer par with events cela a fonctionné mais je ne réussis a recopié le contenu maintenant.
Dans cette exemple, le problème se situe au niveau de la procédure fe_formclosed à la ligne Me.TabMain.TabPages.Add(Me.tc.SelectedTab).
Merci de votre support.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49
| Public Class Form1
' WithEvents fe As New Form
' WithEvents tc As New Windows.Forms.TabControl
Private Sub fe_Formclosed(ByVal sender As Object, ByVal e As System.EventArgs)
Dim myTabPage As New TabPage()
myTabPage.Text = "TabPage"
Me.TabMain.TabPages.Add(Me.tc.SelectedTab)
End Sub
Private Sub main()
Me.Show()
End Sub
Private Sub TabMain_MouseMove(sender As Object, e As MouseEventArgs) Handles TabMain.MouseMove
If (e.Button = MouseButtons.Right) Then
TabMain.DoDragDrop(TabMain.SelectedTab, DragDropEffects.Move)
End If
End Sub
Private Sub TabMain_GiveFeedback(sender As Object, e As GiveFeedbackEventArgs) Handles TabMain.GiveFeedback
e.UseDefaultCursors = False
End Sub
Public Sub TabMain_QueryContinueDrag(sender As Object, e As QueryContinueDragEventArgs) Handles TabMain.QueryContinueDrag
If Control.MouseButtons <> MouseButtons.Right Then
e.Action = DragAction.Cancel
Dim fe As New Form
Dim tc As New Windows.Forms.TabControl
tc.Dock = DockStyle.Fill
AddHandler fe.FormClosed, AddressOf fe_Formclosed
fe.Size = New Size(400, 300)
fe.StartPosition = FormStartPosition.Manual
fe.Location = MousePosition
tc.TabPages.Add(TabMain.SelectedTab)
fe.Icon = Me.Icon
fe.Controls.Add(tc)
fe.Show()
Me.Cursor = Cursors.Default
Else
e.Action = DragAction.Continue
Me.Cursor = Cursors.Help
End If
End Sub
End Class |