......
            DataGridView dgv = new DataGridView();
            dgv.Dock = DockStyle.Top;
            tp.Controls.Add(dgv);            Splitter spl = new Splitter();
            spl.Name = "spl" + pn.ToString();
            spl.BackColor = Color.ForestGreen;
            spl.Dock = DockStyle.Top;
            tp.Controls.Add(spl);            WebBrowser wb = new WebBrowser();
            wb.Name = "wb" + pn.ToString();
            wb.Dock = DockStyle.Fill;
            tp.Controls.Add(wb);
            ....用手动添加可以,用像上面动态添加却没效果出来,dgv  spl wb 好像不在同一层一样,dgv spl会重叠锁定在上该,wb也一样重叠填充整个tp(TabPage).给他们全置顶(BringToFront)没用

解决方案 »

  1.   

    应该先添加splitter ,然后给它的左右两个panel添加control吧。没试过,可以试试!
      

  2.   

      DataGridView dgv = new DataGridView();
      dgv.Dock = DockStyle.Top;
      
      Splitter spl = new Splitter();
      spl.Name = "spl" + pn.ToString();
      spl.BackColor = Color.ForestGreen;
      spl.Dock = DockStyle.Top;  WebBrowser wb = new WebBrowser();
      wb.Name = "wb" + pn.ToString();
      wb.Dock = DockStyle.Fill;  tp.Controls.Add(dgv);
      tp.Controls.Add(spl);
      tp.Controls.Add(wb);
      

  3.   

    这样能像吗?怀疑
    spl.Name = "spl" + pn.ToString();  spl.Dock = DockStyle.Top;
      

  4.   

    1楼的方法是可行的,经过测试:顺序是
                tp.Controls.Add(spl);
                tp.Controls.Add(wb);
                tp.Controls.Add(dgv);
    如果是
                tp.Controls.Add(spl);
                tp.Controls.Add(dgv);
                tp.Controls.Add(wb);
    则dgv为停在顶部sql也可以起作用,但是wb不起作用会填充整个tabpage,接第一种顺序则可以. 设计视图是第一个添加dgv 并设为top 再添加spl设为top 最后添加wb设为fill.开始我是按这个顺序写的源码,在设计视图也不能按源码顺序来添加.2楼的顺序其实和我贴出来的代码是一样的顺序.3楼的不要怀疑,自己可以去试下.
    spl.Name = "spl" + pn.ToString();
    这是命名,在此段源码中还是用spl来操作的不是.在对象被实例化后,可以通过name关键字来调用spl每个 .那时确定是不能再用spl了