2010-12-07 67 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 
    } 
}