Category / Section
How to tear the TabPageAdv as a separate window by dragging it from the WinForms TabControlAdv?
Display the tab page as a separate window
TabControlAdv doesn’t have support to tear the TabPageAdv from the TabControlAdv and display it as a separate window. But this requirement can be achieved by handling the following TabControlAdv events.
1. MouseDown
2. MouseMove
3. MouseUp
C#
//Initializes the TabPageAdv
TabPageAdv SelectedPage = null;
bool isMouseDown = false;
bool isDragging = false;
Point mouseDownLocation = Point.Empty;
//The event raises when Mouse button is pressed.
private void tabControlAdv1_MouseDown(object sender, MouseEventArgs e)
{
if (e.Button == System.Windows.Forms.MouseButtons.Left)
isMouseDown = true;
else
{
isMouseDown = false;
isDragging = false;
}
mouseDownLocation = e.Location;
}
//The event raises when Mouse is moved from the TabControlAdv
private void tabControlAdv1_MouseMove(object sender, MouseEventArgs e)
{
if (isMouseDown && e.Button == System.Windows.Forms.MouseButtons.Left && mouseDownLocation.Y != e.Location.Y)
isDragging = true;
else
isDragging = false;
}
//The event is raised when mouse pointer releases the TabControlAdv.
private void tabControlAdv1_MouseUp(object sender, MouseEventArgs e)
{
//Initializes the newly created form
Form2 form2 = new Form2();
if (isDragging)
{
form2.Size = this.Size;
if (this.tabControlAdv1.SelectedTab != null)
{
SelectedPage = this.tabControlAdv1.SelectedTab;
form2.Text = SelectedPage.Text;
form2.Show();
//Adds the selected TabPage in Form2
if (this.tabControlAdv1.TabPages.Count > 0)
form2.tabControlAdv1.Controls.Add(SelectedPage);
}
}
isMouseDown = false;
isDragging = false;
}
VB
'Initializes the TabPageAdv Private SelectedPage As TabPageAdv = Nothing Private isMouseDown As Boolean = False Private isDragging As Boolean = False Private mouseDownLocation As Point = Point.Empty 'The event raises when the Mouse button is pressed. Private Sub tabControlAdv1_MouseDown(ByVal sender As Object, ByVal e As MouseEventArgs) Handles tabControlAdv1.MouseDown If e.Button = System.Windows.Forms.MouseButtons.Left Then isMouseDown = True Else isMouseDown = False isDragging = False End If mouseDownLocation = e.Location End Sub 'The event is raised when Mouse moves from the TabControlAdv Private Sub tabControlAdv1_MouseMove(ByVal sender As Object, ByVal e As MouseEventArgs) Handles tabControlAdv1.MouseMove If isMouseDown AndAlso e.Button = System.Windows.Forms.MouseButtons.Left AndAlso mouseDownLocation.Y <> e.Location.Y Then isDragging = True Else isDragging = False End If End Sub 'The event is raised when mouse pointer releases the TabControlAdv. Private Sub tabControlAdv1_MouseUp(ByVal sender As Object, ByVal e As MouseEventArgs) Handles tabControlAdv1.MouseUp 'Initializes the newly created form Dim form2 As New Form2() If isDragging Then form2.Size = Me.Size If Me.tabControlAdv1.SelectedTab IsNot Nothing Then SelectedPage = Me.tabControlAdv1.SelectedTab form2.Text = SelectedPage.Text form2.Show() 'Adds the selected TabPage in Form2 If Me.tabControlAdv1.TabPages.Count > 0 Then form2.tabControlAdv1.Controls.Add(SelectedPage) End If End If End If isMouseDown = False isDragging = False End Sub

Figure 1: Before separating the TabPageAdv from the TabControlAdv

Figure 2: After separating the TabPageAdv from the TabControlAdv
Samples: