我有一个带有文本框和数据网格视图的表单页面以及包含选项卡控件的其他表单。我想在第二个表单中添加第一个表单选项卡。我尝试编写显示表单的代码,但它比选项卡容器大并且不适合。仅出现一半的表格。
这是我的代码:
private void tcMainPage_SelectedIndexChanged(object sender, EventArgs e)
{
if (tcMainPage.SelectedIndex == 0)
{
GTOWN.PrintingPage BookInfo = new PrintingPage();
BookInfo.TopLevel = false;
BookInfo.FormBorderStyle = FormBorderStyle.None;
BookInfo.Dock = DockStyle.Fill;
tpSearch.Controls.Add(BookInfo);
BookInfo.Show();
}
}
我面临这个问题,如果有帮助的话我创建这个
public void addform(TabPage tp, Form f)
{
f.TopLevel = false;
//no border if needed
f.FormBorderStyle = FormBorderStyle.None;
f.AutoScaleMode = AutoScaleMode.Dpi;
if (!tp.Controls.Contains(f))
{
tp.Controls.Add(f);
f.Dock = DockStyle.Fill;
f.Show();
Refresh();
}
Refresh();
}
将您的主表单设置为容器。
yourForm.IsMdiContainer = true;
然后将子表单添加到tabPage中:
private void tcMainPage_SelectedIndexChanged(object sender, EventArgs e)
{
if (tcMainPage.SelectedIndex == 0)
{
PrintingPage newFrm = new PrintingPage
{
MdiParent = this,
// This set the form parent as the tabClicked
Parent = tcMainPage.TabPages[0]
};
newFrm.Show();
}
}
// https://youtu.be/TBh__9uh5iA
// mainform.cs
TabForm1 form1 = new TabForm1(tabPage1);
form1.TopLevel = false ;
form1.Show();
tabPage1.Controls.Add(form1) ;
// tabForm
public partial class TabForm1 : Form
{
public TabForm1(Control parent)
{
InitializeComponent();
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None ;
this.Size = parent.Size;
this.Anchor = AnchorStyles.Left | AnchorStyles.Right | AnchorStyles.Top | AnchorStyles.Bottom ;
}
}
表单是最顶层的对象,不能放置在其他容器内。
您可能需要重构代码,以便表单上的项目位于用户控件上。此时,您可以将该 UserControl 添加到 Form 和 TabControl
public UserControl myControl(){ /* copy your current view code here */}
public Form myForm(){
Controls.Add(new myControl());
}
public Form myTabbedForm(){
var tabControl = new TabControl();
var page1 = new TabPage();
page1.Controls.Add(new myControl());
tabControl.TabPages.Add(page1);
this.Controls.Add(tabControl);
}