zoukankan      html  css  js  c++  java
  • e.hasMorePages有一个用法

    这是下面这个老哥写的,只是写代码太乱,我给整理一下

    在打印时,经常用到printPage函数,但是,其中换页打印是令人头痛的问题,经常用了e.HasMorePages = true; 语句之后,所有页面都是重复第一页,

    因为e.HasMorePages = true是重新调用printDocument1_PrintPage,

    所以每次调用都是从头开始,才会出现所有页面的内容都一样,下面是自己解决这个问题的一个方法:

    private void printDocument1_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e){
        int index=1;
        switch (index)//控件打印的页码             
        {                
            case 1:
                index++;
                //...一页打印完之后
                e.HasMorePages = true;
                break;
            case 2:
                index++;
                //...一页打印完之后
                e.HasMorePages = true;
                break;
            case 3:
                index++;
                //...一页打印完之后
                e.HasMorePages = true;
                break;
            case 4:
                index++;
                e.HasMorePages = false;
                break;
        }
    } 

    ————————————————
    版权声明:本文为CSDN博主「charcle」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/charcle/java/article/details/2291633

    下面是我的一点适应用法

     //作用是高度达到一定值返回bool值
            bool DrawRemarkTest(string remark, float xUnit, PointF start, Font font, Graphics g)
            {
                char[] translate = remark.ToArray();
                string tempStr = "";
                float colWidth = 0;
                List<string> rows = new List<string>();
                for (int i = 0; i < translate.Length; i++)
                {
                    float charWidth = g.MeasureString(translate[i].ToString(), font).Width;
                    if ((colWidth + charWidth) > xUnit)
                    {
                        rows.Add(tempStr);
                        tempStr = translate[i].ToString();
                        colWidth = charWidth;
                    }
                    else
                    {
                        colWidth = colWidth + charWidth;
                        tempStr = tempStr + translate[i].ToString();
                    }
    
                }
                if (!string.IsNullOrEmpty(tempStr))
                {
                    rows.Add(tempStr);
                }
                float startY = start.Y;
                List<string> rowsCount = new List<string>();
                foreach (var v in rows)
                {
                    var count = v.Split('
    ');
                    rowsCount.AddRange(count);
                }
                //如果超多了100高度直接就写文字,让图去下一页
                if (rowsCount.Count * 15 > 100 && rowsCount.Count * 15 < 200)
                {
                    foreach (var v in rows)
                    {
                        g.DrawString(v, font, Brushes.Black, new PointF(start.X, startY));
                        startY = startY + 1 + g.MeasureString(v, font).Height;
                    }
                    return true;
                }
                else if(rowsCount.Count * 15 >= 200)//如果超多了200高度就写一半文字,让剩下的文字和图去下一页
                {
                    rows.Clear();
                    int i = 0;
                    //取出14行,多的放在stream里
                    foreach (var v in rowsCount)
                    {
                        i++;
                        var temp = v.Replace("
    ", "
    ");
                        if (i < 12)
                        {
                            rows.Add(temp);
                        }
                        else
                        {
                            stream += temp;
                        }
                    }
                  
                    foreach (var v in rows)
                    {
                        g.DrawString(v, font, Brushes.Black, new PointF(start.X, startY));
                        startY = startY + 1 + g.MeasureString(v, font).Height;
                    }
    
                    return true;
                }
                else { //没有的话那就在当前页写文字和图
                    foreach (var v in rows)
                    {
                        g.DrawString(v, font, Brushes.Black, new PointF(start.X, startY));
                        startY = startY + 1 + g.MeasureString(v, font).Height;
                    }
                    startYTemp = startY + 10;
                    return false;
                }
            }
  • 相关阅读:
    【转载】apache kafka系列之-监控指标
    自动恢复被挂掉的hbase region server
    beeline连接hive server遭遇MapRedTask (state=08S01,code=1)错误
    sqoop-1.4.6安装配置
    spark RDD的元素顺序(ordering)测试
    【转载】常用Maven插件介绍
    【转载】Spark SQL 1.3.0 DataFrame介绍、使用
    SparkSQL之数据源
    spark集成hive遭遇mysql check失败的问题
    hive启动报错: Found class jline.Terminal, but interface was expected
  • 原文地址:https://www.cnblogs.com/galatia/p/12707217.html
Copyright © 2011-2022 走看看