描述:下面这个方法是主窗体中的公共方法,主用是用于MainForm中的TabControl中动态添加TabPage,
然后又在TabPage中又嵌套一个传进来的Form。
public void AddTabPageForm(Form f)
        {                Form form = f;
                TabPage tab = (TabPage)formList["tab" + form.Name];   
                if (tab == null)
                {
                    tab = new TabPage();
                    formList.Add("tab" + form.Name, tab);
                    form.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.Form_Closing);
                    form.FormBorderStyle = FormBorderStyle.None;
                    form.Dock = DockStyle.Fill;
                    form.TopLevel = false;
                    form.Visible = true;
                    form.Parent = tab;
                   
                    tab.Name = "tab" + form.Name;
                    tab.Text = "  " + form.Text + "  ";
                    this.MainTabControl.TabPages.Add(tab);
                    this.MainTabControl.SelectedTab = tab;
                }
}.....
项目中,现在有一个叫LaborAdd的窗体,窗体中有一个TabControl,名叫LaborTabControl,并且包含了两个TabPage,一个是TabPage1和TabPage2。
通过调用AddTabPageForm(Form f)方法,显示LaborAdd窗体,现在问题出现了。
问题:TabPage1的所有控件,例如Label、TextBox等都能显示出来,但是切换到TabPage2的时候,原来已经添加的Label和TextBox等所有控件一个都没有显示出来。
然后我在LaborAdd中测试了一下,           
 foreach (Control con in tabPage2.Controls)
{
                
                con.Visible = true;
                Console.WriteLine(con.Visible);
}
发现tabPage2下面的控件的Visible都是false的,就算在前面加了con.Visible=true,到最后输出都还是false.
请问高手们,这个问题怎样解决???

解决方案 »

  1.   

    把每一组控件放在一个panel里面
    还有一点  检查检查你TabControl切换的逻辑写得是否完全准确
      

  2.   

    首先看tab.Controls到底有没有加的那些控件
    然后就是tabcontrol 的机制, 试试先把tabpage加到tabcontrol, 再往tabpage里加form
      

  3.   

    问题,已经给本人解决了!        private Hashtable formList = new Hashtable();
            private Form form = null;
            /// <summary>
            /// 添加TabPages
            /// </summary>
            /// <param name="obj">窗体</param> 
            public void AddTabPageForm(Form f)
            {
                try
                {
                    this.form = f;
                    TabPage tab = (TabPage)formList["tab" + form.Name];
                    if (tab == null)
                    {
                        tab = new TabPage();
                        formList.Add("tab" + form.Name, tab);
                        form.MdiParent = this;//1.关键
                        form.FormBorderStyle = FormBorderStyle.None;
                        form.Dock = DockStyle.Fill;
                        form.TopLevel = false;
                        form.Visible = true;
                        form.Parent = tab;//2.关键
                           tab.Name = "tab" + form.Name;
                        tab.Text = "  " + form.Text + "  "; 
                        tab.Parent = this.MainTabControl;
                        this.MainTabControl.SelectedTab = tab;                }
                }
                catch (Exception ex)
                {
                    MessageBox.Show("系统发生异常,请与管理员联系!原因:" + ex.Message);
                }
            }结贴