Yilmaz Paçariz
Yilmaz Paçariz

Reputation: 186

add a Tab to Tab control with its content

I am working on an ERP project. it is a button on treeView box and when it is clicking on a button in treeView it must create a Tab with its content (content which is defined-designed before).

I can add a tab programically but how can I design its content?

Upvotes: 0

Views: 1406

Answers (3)

Nikola Davidovic
Nikola Davidovic

Reputation: 8656

You have few solutions, the simplest one is to create TabPage, create desired Controls, set up their properties (i.e. Size, Location, Text etc.), add them to the TabPage and then add TabPage to the TabControl.

TabPage tp = new TabPage();
//create controls and set their properties
Button btn1 = new Button();
btn1.Location = new Point(10,10);
btn1.Size = new System.Drawing.Size(30,15);
//add control to the TabPage
tp.Controls.Add(btn1);
//add TabPage to the TabControl
tabControl1.TabPages.Add(tp);

the second solution is to override TabPage in your class, for instance CustomTabPage where you will set up controls in the constructor of the class. Then, when you want to add new TabPage, create your CustomTabPage instance and add it to the TabControl.

public class CustomTabPage : TabPage
{
    public CustomTabPage()
    {
        //create your Controls and setup their properties
        Button btn1 = new Button();
        btn1.Location = new Point(20, 20);
        btn1.Size = new System.Drawing.Size(40, 20);
        //add controls to the CustomTabPage
        this.Controls.Add(btn1);
    }
}

//Create CustomTabPage
CustomTabPage ctp = new CustomTabPage();
tabControl1.TabPages.Add(ctp);

the third solution (the best but the most complicated) is to create your desired UserControl with everything you want on it (you can use Designer help), then create an instance of your UserControl, Create a TabPage and add UserControl on the TabPage. Then add TabPage to the TabControl.

 public partial class CustomControlForTabPage : UserControl
 {
     public CustomControlForTabPage()
     {
         InitializeComponent();
     }
 }

//Create CustomControl
TabPage tp = new TabPage();
CustomControlForTabPage ccftp = new CustomControlForTabPage();
//set properties you like for your custom control
tp.Controls.Add(ccftp);
tabControl1.TabPages.Add(ctp);

Upvotes: 1

Pondidum
Pondidum

Reputation: 11627

Adding this to your click event of your treeview should do what you are after:

var contentControl = new ContentControl ();    //This is what we will put all your content in
contentControl.Dock = DockStyle.Fill;

var page = new TabPage("Tab Text");    //the title of your new tab
page.Controls.Add(contentControl);     //add the content to the tab

TabControl1.TabPages.Add(page);        //add the tab to the tabControl

To your project, add a new UserControl called ContentControl (or whatever you need, just using this in my example), and fill it with all the contents you want to appear in your tab.

Upvotes: 2

Andras Zoltan
Andras Zoltan

Reputation: 42343

Add a new user control to the project then use the designer to do controls/layout, then when you click all you do is add a new instance of the user control to the tab - probably docked to fill the tab unless your form's size is fixed.

Upvotes: 0

Related Questions