就算 Control.Location属性if(panel1.Controls.Count == 0)
{
for(int i = 0; i < 4; ++i)
{
TextBox tb = new TextBox();
tb.Text = i.ToString();
tb.Width = 100;
tb.Location = new Point(0, 40*(i+1));
tb.Name = i.ToString();
panel1.Controls.Add(tb);
}
}

解决方案 »

  1.   

    tb.Location = new Point(0, 40*(i+1));    //这个就是给控件定位的。你删除原来的控件之前,先取到它的Location值,是个Point。
    再把这个值赋给新的控件就行了。Point ControlLocation = yourControl.Location;newControl.Location = ControlLocation;
      

  2.   

    我如何知道 panel 上有哪些地方现在没有控件。
      

  3.   

    晕,你的panel上在程序启动的时候有没有控件?
    如果没有,就随便往上加,然后把Location记下来。
      

  4.   

    GetChildAtPoint (x,y)==null 就没有控件啰,但这效率太低了吧
      

  5.   

    我自己做的控件,可以在 panel中活动的。想和sql server 中 设计视图时 添加表的效果类似。
      

  6.   

    ArrayList al = new ArrayList();
    foreach(Control c in panel.Controls)
    {
        if(c is yourControl)
        {
            al.Add(c.Location);    //Point
        }
    }这样就可以得到Panel中所有控件的位置。再根据控件的大小(Size),就可以算出来哪些位置是空的。