小弟现要用listbox动态添加控件在里面
看代码:
           dindanbtn[] d=new dindanbtn[11];
            for (int i = 0; i < 11; i++)
            {
                d[i] = new dindanbtn("订单提醒","你有一笔订单需签收",i);
                listBox1.Controls.Add(d[i].getmypan());
            }d[i].getmypan()这个返回的是个pannel,pannel纵坐标都做了控制,不是坐标问题
现在是这样,明明已经装不下了,但是listBox1不会出现下拉滚动条
把listBox1.Controls.Add(d[i].getmypan())换成listBox1.items.Add(d[i].getmypan())就会出现滚动条请问是什么原因,如何让添加进去的控件多了超出listbox就自动出现滚动条?

解决方案 »

  1.   

    listBox1.Controls.Add
    你添加为子控件了。
    listBox1.items.Add
    这才是添加列表。
      

  2.   

    楼上对两个都应该可以
    listBox1.items.Add()
    listBox1.Items.AddRange(d)
      

  3.   

    楼上二位可能没搞明白我的想法
    类似于qq好友列表,外面一个listbox,每个好友就是一个pannel
    listBox1.Controls.Add(pannel)
    当然要这样添加
    如果listBox1.items.Add
    界面是不会显示出子控件的。
    简单点说
     for (int i = 0; i < 11; i++)
      {
        pannel pannel=new pannel();
        pannel.location=new point(0,i*50);
        listBox1.Controls.Add(pannel1);
      }
    如此添加后,listbox1怎么才能显示滚动条?
      

  4.   

    那就不是个 listBox用 spy++ 去看看控件的类库
      

  5.   

    楼上的做法应该可行
    能否给个小demo。不甚感激
      

  6.   

    不知道你要的是不是这种效果
    这其实不是panel+两个标签,而是子项自绘若是子项HEIGHT都相等,属性DrawMode设置为OwnerDrawFixed,并设置Itemheight属性
    若是不同的话设置为OwnerDrawVariable
    private void listBox1_DrawItem(object sender, DrawItemEventArgs e)
            {
                Graphics g = e.Graphics;
                if (e.Index != -1)
                {
                    Rectangle rect = e.Bounds;
                    if ((e.State & DrawItemState.Selected) == DrawItemState.Selected)
                    {
                        g.FillRectangle(new SolidBrush(Color.FromArgb(252, 234, 164)), rect);
                        Rectangle temp = rect;
                        temp.Height--;
                        temp.Width--;
                        g.DrawRectangle(new Pen(Color.FromArgb(250, 226, 151)), temp);
                    }
                    else
                    {
                        g.FillRectangle(Brushes.White, rect);
                    }
                    string name = listBox1.Items[e.Index].ToString();
                    string time = (new FileInfo(Application.StartupPath + @"\MatchData\" + name)).CreationTime.ToString();
                    g.DrawString("文件名:" + name, new Font("微软雅黑", 10, FontStyle.Bold), new SolidBrush(Color.Black), new PointF(rect.X + 2, rect.Y + 1));
                    g.DrawString("创建时间:" + time, new Font("微软雅黑", 9, FontStyle.Regular), new SolidBrush(Color.LightSlateGray), new PointF(rect.X + 10, rect.Y + 21));
                }
            }