一連のページを印刷するプログラムがあり、各ページの後に停止して印刷するかどうかをユーザーに確認し、印刷する用紙を挿入する。問題は、状況によっては、印刷進行状況ウィンドウをポップアップさせるアイテムを印刷してから、そのウィンドウが消えると、フォームにフォーカスを戻そうとします。しかし、その時までに次のモーダルダイアログが表示され、元のウィンドウが再フォーカスされなくなります。モーダルダイアログは、印刷後のフォーカスの復帰を妨げる。
場合によっては、元のフォームをカバーするために背景からウィンドウを表示することもあります。印刷後にダイアログを表示しないとうまく動作しますが、それは本当にオプションではありません。これは特定のプリンタでのみ発生します。
他の誰かがこの問題に遭遇した場合、どのように修正しましたか?
サンプルコード:
private void Print(int ItemCount)
{
for (int i = 0; i < ItemCount; i++)
{
MessageBox.Show("Insert paper to print to.");
using (PrintDocument PrintDoc = new PrintDocument())
{
PrintDoc.PrintPage += new PrintPageEventHandler(PrintDoc_PrintPage);
PrintDoc.Print();
}
}
}
void PrintDoc_PrintPage(object sender, PrintPageEventArgs e)
{
e.Graphics.DrawEllipse(Pens.Black, new Rectangle(10, 10, 100, 100));
e.HasMorePages = false;
}
私はあなたの答えを見て、あなたのコードをテストプログラムに入れようとしました。残念ながら、元の問題(問題のある物理的なプリンタにアクセスできない)を再現するのは難しいですが、何かを稼働させようとします。私は睡眠声明を実験したと思うし、前には何も効果がなかったと思うので、あまり期待していないが、少なくとも試してみる。 –