打印对话焦点问题

时间:2010-12-07 02:52:14

标签: .net begininvoke

我在桌面应用程序中使用PrintDialog。从Button或上下文菜单调用它时,它可以正常工作。但是,当我单击工具提示按钮调用PrintDialog时,尽管printdialog窗口处于活动状态,但我没有将焦点放在打印按钮上。我需要点击两次才能获得打印。

我得到的解决方案是使用BeginInvoke和delegate来调用异步,现在我可以使用以下代码获得焦点。

ShowThePrintDialog printD = new ShowThePrintDialog(p.ShowDialog); this.BeginInvoke(printD);

我想捕获DialogResult并根据点击printdialog的按钮继续进行。

有人能告诉我如何在使用BeginInvoke时捕获DialogResult吗?

拉​​曼

1 个答案:

答案 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
    }
}