我有一个打印对话框,它是通过绑定导航器工具条上的一个按钮触发的,并给出了我创建了一个委托的打印对话框焦点。我的问题是,如果对话结果正常,你如何触发打印?
这是我的代码......
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();
}
}
答案 0 :(得分:0)
我不确定你为什么要这样做。调用trackPrintDialog.ShowDialog()
应显示打印对话框并将其集中用于用户交互。它还应该防止对话框下方的控件被更改。
调用.BeginInvoke
意味着您正在调用异步代码段,这意味着它会立即返回并继续运行代码。这意味着,由于用户几乎不会立即点击打印对话框中的OK
,因此if语句会将spd()
评估为None
,并且不会打印任何内容。
PrintDialog
旨在阻止,因此不应使用委托来显示和聚焦打印对话框。