我有一个窗体Form,在这个Form上有一个ListBox,且ListBox充满整个Form,想让这个窗体Form随着ListBox中资料的多少而自动变化大小(高度及宽度),如何实现?

解决方案 »

  1.   

    Add数据或者remove数据时改变listBox和form的Size.
      

  2.   

    修改form的clientsize属性可以改变form的大小
      

  3.   

                 //获得ListBox中项的高度
                int Height = this.listBox1.ItemHeight;
                //获得窗体减去Listbox的高度
                int fromHeight = this.Height - this.listBox1.Height;
                //获的ListBox项数乘以单项高度的值
                Height = Height * this.listBox1.Items.Count;
                //加上滚动偏差5
                this.Height = Height + fromHeight + 5;
                //这里为获得ListBox中最长的字符串,自己获得这里从简
                string maxstring=
                      this.listBox1.Items[this.listBox1.Items.Count-1].ToString();
                //将最长字符绘制
                Graphics g = this.CreateGraphics();
                g.PageUnit = GraphicsUnit.Millimeter;
                Size f = TextRenderer.MeasureText
                    (g, maxstring, this.listBox1.Font, new Size(0, 0),TextFormatFlags.NoPadding);
                //获得绘制的长度
                int wids = (int)f.Width;
                //在计算的基础上加滚动条长度15
                this.Width = wids + 15; 这是本人针对你的问题写的一个测试程序,不知道是不是要这个效果,不一定正确,有点误差..
      

  4.   

    万一你的listbox的高度是2000,你的分辨率是1000,你要怎么显示,
      

  5.   

    好尖~!
    建议你还是显示滚动条不要调整窗体大小了,正如6楼说的,如果你的窗体大小设置超过最大值会报错的。
    如果非要修改大小的话可以修改窗体的size属性,  修改的大小值为你的listbox的item总数×每个item的高度加上标题的高度。  宽度直接等于listbox的宽度就可以了