见鬼了,在有些情况下,使用DrawString输出时,在打印预览的画布里显示是空的,但打印出来,该页却是有东西的
StringFormat sfBody = new StringFormat(StringFormatFlags.LineLimit);
g.DrawString(m_Body.Substring(nCharIndex), ftBody, sbBrush,
                new RectangleF(pageLeft, pageTop, pageRight - pageLeft, pageBottom - pageTop), sfBody);

解决方案 »

  1.   

    没人碰到过吗?我发现只有在m_Body这个字符串长度超过一定程序之后才会出现该问题
      

  2.   

    关键还要看你的代码放在什么地方了.StringFormat sfBody = new StringFormat(StringFormatFlags.LineLimit);
    g.DrawString(m_Body.Substring(nCharIndex), ftBody, sbBrush,
                    new RectangleF(pageLeft, pageTop, pageRight - pageLeft, pageBottom - pageTop), sfBody);放在待打印窗体的Paint事件中, 才能在程序上看到.
    否则,只能打印才能看到
      

  3.   

    上面的代码在如下函数中
    public void Draw(object sender, System.Drawing.Printing.PrintPageEventArgs e)
    然后由打印事件委托调用
    printDocument.PrintPage += new System.Drawing.Printing.PrintPageEventHandler(Draw);
      

  4.   

    奇怪的地方就在于大部分情况下DrawString输出都是正常的,只有m_Body这个字符串长度超过一定程序之后才会出现,出现空白页时,其中使用DrawLine的输出均正常,就是DrawString输出的无显示。怪
      

  5.   

    StringFormat sfBody = new StringFormat(StringFormatFlags.LineLimit);
    是这个搞怪吧,去掉看看
      

  6.   

    StringFormatFlags.LineLimit只是保证按行进行布局,去掉后问题依然如故