读取多少条数据,就添加几个panel来显示
当数据多的时候,几百个的的时候,滚动条拉不到底,显示不完全
            DataTable d;
 
            Panel l ;
 
            for(int i = 0; i < d.rows.count; i++)
            {
                l = new Panel() { Width = 100, Height = 100, BackColor = Color.Wheat };
                l.Paint += (x, y) =>
                {
                    y.Graphics.DrawString(d.Row[i]["姓名"].ToString() , new Font("黑体", 17), Brushes.White, 0, 0);
                };
                panel1.Controls.Add(l);
                l.Location = new Point(0, i * 100);
            
        }最后的panel都重叠了

解决方案 »

  1.   

    你在循环里使用委托:
    l.Paint += (x, y) =>
    那么每执行一次循环就对委托增加了一个事件,如果循环 10 次,那么 l.Paint 就执行了 1+2+3...+10 = 55 次之多。改成如下试试:
    l.Paint = (x, y) =>
      

  2.   

    添加完,带滚动条的panel需要
    panel.AutoSize = true;panel.controls.add(p1);
    panel.controls.add(p2);
    .........
    panel.AutoSize = true;
      

  3.   

    也不完全是,应该是
    带滚动条的panel,里面放一个容器panela,高度设为比如10,panela里面添加内容,加完以后panela.AutoSize = true;
      

  4.   


    循环一次  l = new Panel()
    委托为什么会累加呢?
      

  5.   

    朋友们单纯就是panel太多了,滚动条里的方块,已经缩到最小了,小到无法获取正确比例来显示位置了