我在桌面应用程序中使用PrintDialog。从Button或上下文菜单调用它时,它可以正常工作。但是,当我单击工具提示按钮调用PrintDialog时,尽管printdialog窗口处于活动状态,但我没有将焦点放在打印按钮上。我需要点击两次才能获得打印。
我得到的解决方案是使用BeginInvoke和delegate来调用异步,现在我可以使用以下代码获得焦点。
ShowThePrintDialog printD = new ShowThePrintDialog(p.ShowDialog); this.BeginInvoke(printD);
我想捕获DialogResult并根据点击printdialog的按钮继续进行。
有人能告诉我如何在使用BeginInvoke时捕获DialogResult吗?
拉曼
答案 0 :(得分:1)
PrintDialog无法获得焦点,因为工具条按钮Click-event未完成。 这可以通过使用计时器来解决:
private void toolStripButtonPrint1_Click(object sender, EventArgs e)
{
timerPrint1.Start();
}
private void timer1_Tick(object sender, EventArgs e)
{
timerPrint1.Stop();
if (printDialog1.ShowDialog() == DialogResult.OK)
{
// do your stuf
}
}