我要在一个TabPage上放置两个控件,下面一个DataGrid,上面一个Panel,用Splitter分隔.DataGrid的Dock属性为Bottom,Splitter的Dock属性也为Bottom,Panel的Dock属性为Fill.如果我用设计器来放置控件可以达到目的,但是我动态的生成控件,并设置好属性,然后把这三个控件一次加入到TabPage上,就不行.Splitter跑到最下面去了,达不到分隔的目的了.
请问怎么解决这个问题?

解决方案 »

  1.   

    按顺序来设置各个控件的DOCK属性,应该没问题的。
      

  2.   

    //1.创建一个Tab页并加到Tab控件上
    TabPage tabpageNew = new TabPage(module.Caption); 
    tabpageNew.Tag = module; NewGrid.Dock = System.Windows.Forms.DockStyle.Bottom; //3.在Tab页上增加一个Splitter控件
    System.Windows.Forms.Splitter NewSplitter = new System.Windows.Forms.Splitter();
    NewSplitter.Height = 5;
    NewSplitter.BackColor = Color.Red;
    NewSplitter.Visible = true;
    NewSplitter.Dock = System.Windows.Forms.DockStyle.Bottom; //4.添加一个Panel控件
    System.Windows.Forms.Panel TopPanel = new System.Windows.Forms.Panel();
    TopPanel.Dock = System.Windows.Forms.DockStyle.Fill;
    //5.把VGrid添加到Panel上,且Dock为Fill
    TopPanel.Controls.AddRange(new Control[]{NewVGrid});
    NewVGrid.Dock = System.Windows.Forms.DockStyle.Fill; tabpageNew.Controls.AddRange(new Control[]{NewGrid,NewSplitter,TopPanel}); tabBody.TabPages.AddRange(new TabPage[] {
    tabpageNew
    });
    源代码,如上,有什么问题么?
      

  3.   

    这是原因层的问题!
    在设计器选中Splitter >> 右键 >> 置于顶层 即可!
      

  4.   

    你动态设置dock属性了吗?>
    很简单的冬冬啊!!~~
      

  5.   

    to 3tzjq(永不言弃),我的控件都是在程序中动态生成的哦.
    to xiao_p(曼沙珠华),我的代码中有动态地设定Dock属性了啊,如下:
    NewVGrid.Dock = System.Windows.Forms.DockStyle.Fill;
      

  6.   

    重新按次序设置control的dock属性
      

  7.   

    to 3tzjq(永不言弃),搞定了,就是层次的问题,生成之后我再一次调用了控件的BringToFront方法就ok了,谢谢3tzjq(永不言弃)以及各位.