委托后如何打印对话?

时间:2014-11-18 01:02:35

标签: c# .net delegates printdialog bindingnavigator

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

这是我的代码......

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

1 个答案:

答案 0 :(得分:0)

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

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

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