日期:2014-05-17  浏览次数:20848 次

请教一个打印问题!
我生成了一个ArrayList a1的字符串数组,这个数组里面有50个小字符串,每行打印5个小字符串,共打印10行,请教各位大神怎么将他完整的打印出来?

用了个for循环,每行打印a1中的5个字符串
 Font font = new Font("宋体", 14);
 Brush bru = Brushes.Black;
e.Graphics.DrawString(a1[i].ToString(), font, bru, i * 20,  j*30);
总是出现:用户代码未处理ArgumentOutofRangeException这样的错误。
换成 
e.Graphics.DrawString(a1[10].ToString(), font, bru, 60,80);
依旧是这样的错误。

------解决方案--------------------

------解决方案--------------------
 private void Form1_Load(object sender, EventArgs e)
        {
            printPreviewDialog1.Document = printDocument1;
            printPreviewDialog1.ShowDialog();
        }

        private void printDocument1_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
        {
            ArrayList a1 = new ArrayList();
            for (int index = 0; index < 50; index++) 
            {
                a1.Add(index+"");
            }
            for (int i = 0; i < a1.Count; i++)
            {
                //假设打印出来的东西是150 * 240
                int x = (e.PageBounds.Width - 150) / 2;
                int y = (e.PageBounds.Height - 240) / 2;
                Font font = new Font("宋体", 14);
                Brush bru = Brushes.Black;
                e.Graphics.DrawString(a1[i].ToString(), font, bru, 40 * (i % 5) + x, 30 * (i / 5) + y);
            }
        }

------解决方案--------------------
int 改成float