2

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

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

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

我想捕获 DialogResult 并根据单击 printdialog 上的按钮进一步进行操作。

任何人都可以告诉我如何在使用 BeginInvoke 时捕获 DialogResult 吗?

拉曼

4

1 回答 1

2

PrintDialog 没有获得焦点,因为工具条按钮单击事件没有完成。这可以通过使用计时器来解决:

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
    }
}
于 2011-04-19T13:21:25.543 回答