如何在c#中的选项卡控件上添加表单

时间:2017-06-21 14:37:11

标签: c# forms winforms visual-studio tabcontrol

我有一个带有文本框和数据网格视图的表单页面以及包含选项卡控件的其他表单。我想在第二种形式中添加第一个表单选项卡。我尝试编写要显示的表单的代码,但它比选项卡容器大,并且不适合。只有表格的一半出现。

这是我的代码:

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();
       }    
}

this is the form

and that is what appears

4 个答案:

答案 0 :(得分:0)

表单是最顶层的对象,不能放在其他容器中。

您可能希望重构代码,以便表单上的项目位于UserControl上。此时,您可以将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);
}

答案 1 :(得分:0)

将主FORM设置为容器。

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();
    }
}

答案 2 :(得分:0)

my tab form work good in the same code

谢谢你我所有的代码都是正确的但问题是在tab属性我删除了标签并添加了另一个代码现在正在工作

谢谢

答案 3 :(得分:0)

我遇到了这个问题,如果有帮助,我创建了这个

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();            
    }