委派后如何打印对话
本文关键字:打印 对话 何打印 委派 | 更新日期: 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
旨在阻止,因此不应使用委托来显示和聚焦打印对话框。