有LABLE1 LABLE2 ,LABLE1在LABLE2上面(假设上下间距为10PX),当LABLE1填充数据后,LABLE1就把LABLE2挡住了,怎么让LABLE1填充数据,LABLE2向下移动,间距保持在10PX左右?

解决方案 »

  1.   

    1.label的autosize设为false
    或者
    2.在label的大小改变事件里判断两个label的间隔距离,并且按要求设置
      

  2.   

    提供一种方法,这个问题好象还没有完美的方案,试试是否能满足使用// 通过判断内容的长度,动态设置Label的大小. 
    int LblNum = str.Length;                        //Label内容长度 
    int RowNum = 10;                                //每行显示的字数 
    float FontWidth = label1.Width / label1.Text.Length;    //每个字符的宽度 
    int RowHeight=15;                              //每行的高度 
    int ColNum = (LblNum - (LblNum / RowNum)*RowNum) == 0?(LblNum / RowNum) : (LblNum / RowNum) + 1;                                  //列数 
    label1.AutoSize = false;                      //设置AutoSize 
    label1.Width = (int)(FontWidth * 10.0);       //设置显示宽度 
    label1.Height = RowHeight * ColNum;           //设置显示高度 
    //通过这种方法可以令Label每行所显示的字数得到控制,同时也动态的生成的所对应的行数,这对于排版有很大的好处(1)通过上面方法计算出高度
    (2)根据Lable1的TOP+高度+10 设置Label2的TOP位置
      

  3.   

    for(int i=1;i<10;i++)
    {
    Label lbl=new Label();
    lbl.Id=i.ToString(); 
    lbl.Text= i.ToString();                           
    lbl.AutoSize = false;                      
    lbl.Width = 10;      
    lbl.Top=10+i*10;
    this.Controls.Add(lbl);
    }
      

  4.   

    在Lable1填完数据后, 
    Lable1.Refresh
    Lable2.Top = Lable1.Top + Lable1.Height + 10  
    套用#8的代码:
    for(int i=1;i <10;i++) 

    Label lbl=new Label(); 
    lbl.Id=i.ToString(); 
    lbl.Text= i.ToString();                          
    lbl.AutoSize = false;                      
    lbl.Width = 10;        
    lbl.Top=10+i*10;       // 这里有问题吧, 好像是 lbl.Top = Lable1.Top + (位移量 10 + lbl.Height)* i 
    this.Controls.Add(lbl); 
    }
      

  5.   

    用CSS呀,最简单了 style="margin-top:10px;"
      

  6.   

    不知道你是web还是winform?
    winform有TableLayoutPanel
    FlowLayoutPanel
      

  7.   

    倒,这问题都1个月了,你外面套个table,td/tr 固定高宽来控制
      

  8.   


           private void label1_TextChanged(object sender, EventArgs e)
            {
                label2.Top = label1 .Bottom  + 10;
            }
            private void button1_Click(object sender, EventArgs e)
            {
                label1.Text += "我是一个中国人,我爱我的祖国!\r\n";
            }