Articles in this section
Category / Section

How to get the location of tab with respect to screen in WinForms TabbedMDIManager?

1 min read

Location of tab

The TabControlAdded event should be handled to access the TabControlAdv. Then subscribe into the DrawItem event which handles the drawItemInfo and get the bounds of the tabs. This should be stored in a HashTable for further reference. Please refer the below code snippet which illustrates this:

C#

void tb_TabControlAdded(object sender, TabbedMDITabControlEventArgs args)
{
    args.TabControl.DrawItem += new DrawTabEventHandler(mtp_DrawItem);
}
void mtp_DrawItem(object sender, DrawTabEventArgs drawItemInfo)
{
    MDITabPanel mtp = sender as MDITabPanel;
    // Drawing background,borders,interior as usual
    drawItemInfo.DrawBackground();
    drawItemInfo.DrawBorders();
    drawItemInfo.DrawInterior();
    //If hashtable contains entry for particular window title just update position else add a new entry
    if (!ht.Contains(mtp.TabPages[drawItemInfo.Index].Text))
       ht.Add(mtp.TabPages[drawItemInfo.Index].Text, mtp.PointToScreen(drawItemInfo.Bounds.Location));
    else
       ht[mtp.TabPages[drawItemInfo.Index].Text] = mtp.PointToScreen(drawItemInfo.Bounds.Location);
}

VB

Private Sub tb_TabControlAdded(ByVal sender As Object, ByVal args As TabbedMDITabControlEventArgs)
    AddHandler args.TabControl.DrawItem, AddressOf DrawItem
End Sub
Private Sub DrawItem(ByVal sender As Object, ByVal drawItemInfo As DrawTabEventArgs)
    Dim mtp As MDITabPanel = CType(sender, MDITabPanel)
    ' Drawing background,borders,interior as usual
    drawItemInfo.DrawBackground()
    drawItemInfo.DrawBorders()
    drawItemInfo.DrawInterior()
    'If hashtable contains entry for particular window title just update position else add a new entry
    If Not ht.Contains(mtp.TabPages(drawItemInfo.Index).Text) Then
       ht.Add(mtp.TabPages(drawItemInfo.Index).Text, mtp.PointToScreen(drawItemInfo.Bounds.Location))
    Else
       ht(mtp.TabPages(drawItemInfo.Index).Text) = mtp.PointToScreen(drawItemInfo.Bounds.Location)
    End If
End Sub

 

Did you find this information helpful?
Yes
No
Help us improve this page
Please provide feedback or comments
Comments (0)
Please sign in to leave a comment
Access denied
Access denied