+ -
当前位置:首页 → 问答吧 → 求多页面打印问题

求多页面打印问题

时间:2011-12-10

来源:互联网

头次做胶贴打印程序,现在单页打印功能基本完成,多页打印有问题,应该是多页打印不对。现在我这样多页打印后,打印预览起来没完。我也知道应该是
e.HasMorePages写的有问题,但是不知道应该怎么写?
这次120个胶贴,每页50个,应该3页。

比如单页49个胶贴是这样的


明显分页没成功,多页打印也没成功



问题应该就在最后几行上.

源代码

C# code

 private void OnPrintPage(object sender, PrintPageEventArgs e)
        {

            Graphics g = e.Graphics;//初始化边框;

            int x = 50; //商品信息打印的开始横坐标;
            int y = 60; //商品信息打印的开始纵坐标;
            int border_x = 40;  //价签边框打印的开始横坐标;
            int border_y = 40;  //价签边框打印的开始纵坐标;
            int border_w = 110;  //价签边框的宽度;
            int border_h = 150;  //价签边框的高度;
            int sums = 0;//边框数量合变量;
            string lines = "";//打印行内容;
            int font_sunms = 0;//打印内容的数量的合;
           
            for (int z = 0; z < data_list.Rows.Count - 1; z++)
            {
                sums = sums + int.Parse(data_list.Rows[z].Cells[6].Value.ToString().Trim());
                
                //计算字段“数量”列的和,计算需要打印的边框数
            }

            for (int i = 0; i < sums; i++)
            {
                //边框位置计算,每行10个格,打印10格后换行
                if (i % 10 == 0)
                {
                    if (i == 0)
                    {
                        //首格位置
                        border_x = 40;
                        border_y = 40;
                    }
                    else
                    { 
                        //10格换行
                        border_x = 40;
                        border_y = border_y + border_h;
                    }
                }
                else
                { 
                    //打印一个格后,右移动坐标 
                    border_x = border_x + border_w;
                }
                g.DrawRectangle(new Pen(Color.Black, 1), border_x, border_y, border_w, border_h);  
            }
            
            //循环遍历DataGridView中的所有行,取得打印内容和位置
            for (int j = 0; j < data_list.Rows.Count - 1; j++)
            {
                for (int p = 0; p < int.Parse(data_list.Rows[j].Cells[6].Value.ToString()); p++)
                {
                    //DataGridView单行打印位置计算
                    if (font_sunms % 10 == 0)
                    {
                        if (font_sunms == 0)
                        {
                            //首格位置
                            x = 50;
                            y = 60;
                        }
                        else
                        {
                            //打印10格换行
                            x = 50;
                            y = y + border_h;
                        }
                    }
                    else
                    {
                        //打印一个格后,右移动坐标
                        x = x + border_w;
                    }
                    font_sunms = font_sunms + 1;          

                foreach (object cell in data_list.Rows[j].Cells)
                {                  

                    //判断DataGridView是否为空
                    DataGridViewCell d = (DataGridViewCell)cell;
                    if (d.Value == null)
                    {
                        MessageBox.Show("数据输入不完整", "错误提示");
                        return;
                    }
                    //取得DATAGRIDVIEW单行的内容
if (data_list.Rows[j].Cells[0].Value.ToString().Length > 7)
{
//代码过多省略..
t_text.Text = "....";
}
                                       
               
                    //单条记录需要打印的数量
                    e.Graphics.DrawString(lines, new Font("Arial", 7), Brushes.Black, x, y);
                }
                if (sums % 50 == 0 && sums >50)
                {
                    if(sums == 50)
                    {
                        //头一页,不分页,正好50格
                           e.HasMorePages = false;
                        return;
                    }
                    else
                    {
                      //如果打印超过50格则分页
                        e.HasMorePages = true;
                    }
                }                       
       }

作者: zln0118   发布时间: 2011-12-10

这么难么?完全没人知道?

作者: zln0118   发布时间: 2011-12-10

高手们都睡了...

作者: zln0118   发布时间: 2011-12-10

2012前也许有结果

作者: bulls5988   发布时间: 2011-12-10

相关阅读 更多

热门下载

更多