委派后如何打印对话

本文关键字:打印 对话 何打印 委派 | 更新日期: 2023-09-27 18:30:56

我有一个打印对话框,该对话框是从绑定导航器工具上的 a 按钮触发的,为了使打印对话框成为焦点,我创建了一个委托。我的问题是,如果对话结果正常,您如何触发打印?

这是我的代码...

    delegate DialogResult ShowPrintDialogue();
    private void trackPrint_Click(object sender, EventArgs e)
    {
        PrintDocument docToPrint = new PrintDocument();
        trackPrintDialog.AllowSomePages = true;
        trackPrintDialog.Document = docToPrint;
        docToPrint.DefaultPageSettings.Landscape = true;
        docToPrint.DocumentName = "Track";
        ShowPrintDialogue spd = new ShowPrintDialogue(trackPrintDialog.ShowDialog);
        this.BeginInvoke(spd);
        if (spd() == DialogResult.OK) // Doesn't work...
        {
            docToPrint.PrintPage += new PrintPageEventHandler(PrintImage);
            docToPrint.Print();
        }
    }

委派后如何打印对话

我不确定你为什么要这样做。 调用trackPrintDialog.ShowDialog()应显示打印对话框,并将其重点放在用户交互上。 它还应防止更改对话框下方的控件。

调用 .BeginInvoke 意味着您正在调用代码的异步部分,这意味着它会立即返回并在代码之后继续运行代码。 这意味着,由于用户几乎不会立即单击打印对话框上的OK,因此 if 语句评估spd() None并且不会打印任何内容。

PrintDialog旨在阻止,因此不应使用委托来显示和聚焦打印对话框。