PageSetupDialog 未正确返回 PageSize

发布于 2024-08-28 21:00:39 字数 1013 浏览 17 评论 0原文

我正在尝试使用 PageSetupDialog 设置文档的打印页面。

在打开对话框之前,文档已正确设置,页面大小和页面来源也已正确设置。 但是,当我选择不同的纸张尺寸和纸张来源后从对话框返回时,纸张尺寸未正确反映,而纸张来源则正常。 是的,我正在按“确定”按钮。

这个问题并不是新问题,但到目前为止还没有正确的答案。

    PageSetupDialog dlgPageSetup = new PageSetupDialog();
    dlgPageSetup.Document = this.printDocument1; //this is fine, assume that.
    dlgPageSetup.PageSettings.PaperSize = new PaperSize("My Custom", 1012, 800);
    dlgPageSetup.PageSettings.PaperSource.SourceName = "Envelope";
    if (dlgPageSetup.ShowDialog(this) == DialogResult.OK) {
        System.Diagnostics.Trace.WriteLine("DEBUG: "
              + dlgPageSetup.PageSettings.PaperSize);
        System.Diagnostics.Trace.WriteLine("DEBUG: "
              + dlgPageSetup.PageSettings.PaperSource);
    }

我正在使用.Net 2.0,VS 2k5。

原始问题的链接。

我猜这仍然是一个错误,它与自定义页面大小有关。有人解决这个问题吗?

I'm trying to set up the print page for a document, using PageSetupDialog.

Before I open the dialog, the document is set correctly, page size and page source are set correctly too.
But when I return from the dialog after select a different paper size and paper source, the paper size is not correctly reflected, while the paper source is fine. Yes, I am pressing OK button.

This issue is not new but so far there has been no proper answer.

    PageSetupDialog dlgPageSetup = new PageSetupDialog();
    dlgPageSetup.Document = this.printDocument1; //this is fine, assume that.
    dlgPageSetup.PageSettings.PaperSize = new PaperSize("My Custom", 1012, 800);
    dlgPageSetup.PageSettings.PaperSource.SourceName = "Envelope";
    if (dlgPageSetup.ShowDialog(this) == DialogResult.OK) {
        System.Diagnostics.Trace.WriteLine("DEBUG: "
              + dlgPageSetup.PageSettings.PaperSize);
        System.Diagnostics.Trace.WriteLine("DEBUG: "
              + dlgPageSetup.PageSettings.PaperSource);
    }

I'm using .Net 2.0, VS 2k5.

Link to original issue.

I am guessing this still is a bug, and its related to custom page size. Has anybody got solution for this problem?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

你的呼吸 2024-09-04 21:00:39

我通过以下方法解决了该问题:

  1. 将页面设置对话框上的文档属性设置为(无)
  2. 如果我看到它设置为自定义 PageKind,则重新创建打印文档

因此,在打开打印设置对话框之前,我检查打印文档的 PageKind ,如有必要,请重新创建,然后打开该对话框。

if(printDocument1->DefaultPageSettings->PaperSize->Kind == 
    System::Drawing::Printing::PaperKind::Custom)
{
  RecreatePrintDocument();
}
pageSetupDialog1->PageSettings = printDocument1->DefaultPageSettings;
pageSetupDialog1->PrinterSettings = printDocument1->PrinterSettings;
Windows::Forms::DialogResult dresult = pageSetupDialog1->ShowDialog();

在 RecreatePrintDocument() 中,我创建一个新的打印文档并分配处理程序,诸如此类的事情。

这不是一个很好的解决方案,因为如果用户选择自定义页面类型,我们就会忘记页面设置,但这是一个开始。

I worked around the problem by:

  1. setting the Document property on the pagesettings dialog to (none)
  2. recreating the print document if I see that it is set to a custom PageKind

So before I open the printsettings dialog, I check the PageKind of the print document, recreate if necessary, and then open the dialog.

if(printDocument1->DefaultPageSettings->PaperSize->Kind == 
    System::Drawing::Printing::PaperKind::Custom)
{
  RecreatePrintDocument();
}
pageSetupDialog1->PageSettings = printDocument1->DefaultPageSettings;
pageSetupDialog1->PrinterSettings = printDocument1->PrinterSettings;
Windows::Forms::DialogResult dresult = pageSetupDialog1->ShowDialog();

In RecreatePrintDocument(), I create a new printdocument and assign the handler, that sort of thing.

This isn't a great solution, because we just forget the page settings if the user chooses a custom page kind, but it's something to start with.

蹲墙角沉默 2024-09-04 21:00:39

这是一个已知的错误。直到.NET 3.5,它仍然是可重现的。有关线程的更多详细信息 http: //social.msdn.microsoft.com/forums/en-US/winforms/thread/81bb2cea-8d47-4ddc-a174-14d6bc196de7/

This is a known bug. Till .NET 3.5, it is still reproducible. More details on thread http://social.msdn.microsoft.com/forums/en-US/winforms/thread/81bb2cea-8d47-4ddc-a174-14d6bc196de7/

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文