Embed a form onto a tabcontrol in windows forms

2019-01-19 17:48发布

I have a tab control in a windows form and I want to be able to click on a tab and in the body area of the tab I want it to display another form as an embedded component. Is this possible? If so, can someone please provide an example or a link to an example of how to accomplish this?

5条回答
我欲成王,谁敢阻挡
2楼-- · 2019-01-19 18:10

Set your MainForm (Parent) as IsMDIContainer = true;

Create an instance of the ChildForm and call this function:

FormChild frmChild = new FormChild();
AddNewTab(frmChild);

Copy this Function to your code:

private void AddNewTab(Form frm)
{

    TabPage tab = new TabPage(frm.Text);

    frm.TopLevel = false;

    frm.Parent = tab;

    frm.Visible = true;

    tabControl.TabPages.Add(tab);

    frm.Location = new Point((tab.Width - frm.Width) / 2, (tab.Height - frm.Height) / 2);

    tabControl.SelectedTab = tab;

}
查看更多
小情绪 Triste *
3楼-- · 2019-01-19 18:11

I think the other answer has the right idea; Tabbed MDI is probably what you want.

There is an approach where you create a UserControl that has the same content as the form and use that on the TabPage.

TabPage myTabPage = new TabPage(sometext);
myUserControl = new myUserControlType();
myUserControl.Dock = DockStyle.Fill;
myTabPage.Controls.Add(myUserControl);
myTabControl.Add(myTabPage);

http://bytes.com/topic/c-sharp/answers/270457-can-i-add-form-tabpage goes into more detail; but I'd look at the MDI stuff first.

查看更多
老娘就宠你
4楼-- · 2019-01-19 18:16

If you do not want to use MDI, you can try to put everything from desired form to user control and add this user control in both form and tab.

查看更多
爷的心禁止访问
5楼-- · 2019-01-19 18:18

You can embed a Form but it's not the best choice.

Better place the contents on UserControls and add that to the TabPage.

查看更多
等我变得足够好
6楼-- · 2019-01-19 18:29

You are probably looking for Tabbed MDI Child Forms

查看更多
登录 后发表回答