2010-12-07 76 views
1

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

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

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

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

任何人都可以给我一个想法如何在使用BeginInvoke时捕获DialogResult?

拉曼

回答

1

PrintDialog类不获得焦点,因为toolstripbuttons点击事件没有完成。 这可以通过使用计时器来解决:

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