【问题标题】:printPreviewDialog show too many windowsprintPreviewDialog 显示太多窗口
【发布时间】:2012-06-08 10:14:23
【问题描述】:

我想使用 printPreviewDialog 控件。我添加了 4 个控件:richTextBox、按钮、printPreviewDialog 和 printDocument。对于 printDocument1,我添加:

    private: System::Void printDocument1_PrintPage(System::Object^  sender, System::Drawing::Printing::PrintPageEventArgs^  e) {
               printDocument1->Print();
               e->Graphics->DrawString(richTextBox1->Text,richTextBox1->Font, Brushes::Black,(float)80,(float)80 );
    } 

对于按钮:

    private: System::Void button1_Click(System::Object^  sender, System::EventArgs^  e) {
    printPreviewDialog1->Document = printDocument1;
    printPreviewDialog1 -> ShowDialog();
     }

代码没问题,我可以构建和运行应用程序。但是当我点击按钮时,我收到了这样的信息:

http://www.screenr.com/fJr8

谁能帮帮我?谢谢大家!

【问题讨论】:

  • 我想知道这行; printDocument1->Print(); 递归调用printDocument1_PrintPage 事件
  • @CarlWinder - 感谢您的快速回答。你是对的,当我删除 printDocument1->Print(); 预览对话框正常工作时,但是......我如何在不使用 printDocument1->Print(); 的情况下打印文档??
  • ShowDialog 将返回一个类似OkCancel 的值,我一时想不起来实际代码叫什么。但是你会检查来自ShowDialog的返回码,如果它是Ok然后调用Print函数。
  • @CarlWinder : 谢谢老兄 :) 这就是我想知道的。

标签: windows forms printing c++-cli


【解决方案1】:

不要在 PrintPage 事件处理程序中调用 PrintDocument::Print()。当 Print() 方法调用再次调用 PrintPage 事件处理程序时,所有的地狱都会崩溃。让您的程序因该网站的名称而崩溃需要一段时间,您可能首先会用完句柄配额。

只是删除语句,它没有任何用处。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-27
    • 1970-01-01
    • 2021-05-20
    • 1970-01-01
    • 2012-03-12
    • 1970-01-01
    相关资源
    最近更新 更多