顶级控件不能添加到控件中
本文关键字:控件 添加 不能 级控 | 更新日期: 2023-09-27 18:13:40
如何在主表单中加载其他表单。
我试着写
private void frmInitialEntryBooks_Load(object sender, EventArgs e)
{
frmSujbect objForm = new frmSujbect();
pnl.Controls.Add(objForm);
objForm.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
objForm.Dock = DockStyle.Fill;
objForm.Show();
}
但是它抛出异常Top-level control cannot be added to a control
在行pnl.Controls.Add(objForm);
使用
private void frmInitialEntryBooks_Load(object sender, EventArgs e)
{
frmSujbect objForm = new frmSujbect();
objForm.TopLevel = false;
pnl.Controls.Add(objForm);
objForm.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
objForm.Dock = DockStyle.Fill;
objForm.Show();
}
您缺少objForm.TopLevel = false;
在frmsubject
中设置TopLevel = False
,然后尝试
frmSujbect objForm = new frmSujbect();
pnl.Controls.Add(objForm);
objForm.Show();
我做了以下操作:
方法:
private void PopulateFormIntoTab(Form form)
{
TabPage page = tabControl1.SelectedTab;
form.TopLevel = false;
form.Parent = page;
form.FormBorderStyle = FormBorderStyle.None;
form.Dock = DockStyle.Fill;
form.Show();
tabControl1.TabPages[tabControl1.SelectedIndex].Controls.Clear();
tabControl1.TabPages[tabControl1.SelectedIndex].Controls.Add(form);
}
初始化表单:
public Form1()
{
InitializeComponent();
tabControl1.TabPages.Clear();
tabControl1.Dock = DockStyle.Fill;
tabControl1.TabPages.Add(new TabPage("Form2"));
tabControl1.TabPages.Add(new TabPage("Form3"));
tabControl1.TabPages.Add(new TabPage("Form4"));
PopulateFormIntoTab(new Form2());
}
最后,在选定的选项卡索引更改:
private void TabControl1_SelectedIndexChanged(object sender, EventArgs e)
{
Form form = null;
switch (tabControl1.SelectedIndex)
{
case 1:
form = new Form3();
break;
case 2:
form = new Form4();
break;
default:
form = new Form2();
break;
}
PopulateFormIntoTab(form);
}