0

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

这是我的代码...

    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();
        }
    }
4

1 回答 1

0

我不确定您为什么要这样做。调用trackPrintDialog.ShowDialog()应显示打印对话框并将其集中用于用户交互。它还应该防止对话框下方的控件被更改。

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

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

于 2014-12-18T05:50:37.370 回答