Microsoft Communities

Welcome to WindowsClient.net | Sign in | Join

Here are some frequently asked questions about Windows Forms and their answers.

Windows Forms FAQs

How do I programmatically insert or delete tab pages in a TabControl?

To delete a tabpage, you use the tabControl1.Controls.Remove method. To add a new page as the last tab, use the tabControl1.Controls.Add method. Here is some sample code.

// remove the selected tab
tabControl1.Controls.Remove( tabControl1.SelectedTab );

//add a new tabpage as the last tab
tabControl1.Controls.Add( new TabPage( "new Page" ) );

There does not appear to be support in the framework for inserting a tab at a particular position. A work around might be to save the current tabpage controls, clear the Controls collection, and then add the saved controls back to the Controls collection inserting a new tab. Here is some code that does this.

private void InsertTab( int tabNumber, ref TabControl tabControl )
{
  int limit = tabControl.Controls.Count;
  if ( tabNumber < 0 || tabNumber > limit )
  {
    tabControl.Controls.Add( new TabPage( "new Page" ) );
    return;
  }

  int target = tabControl.SelectedIndex;

  // save the exisiting pages & clear the controls
  Control [] c = new Control[ limit ];
  tabControl.Controls.CopyTo( c, 0 );
  tabControl.Controls.Clear();

  // add the earlier pages
  for ( int i = 0; i < target; ++i )
    tabControl.Controls.Add( c[ i ] );

  // insert the page
  tabControl.Controls.Add( new TabPage( "new Page" ) );

  // add the later pages
  for ( int i = target; i < limit; ++i )
    tabControl.Controls.Add( c[ i ] );

  // select the new page
  tabControl.SelectedIndex = target;
}

Contributed from George Shepherd's Windows Forms FAQ



Page view counter