0

DBからリストをループし、DBにいくつかのテーブルを設定し、CrystalReportのPDFを出力するプログラムを作成しました。印刷中に、現在印刷しているものを示すラベルとジョブをキャンセルするボタンが表示された新しいウィンドウポップアップが表示されます。私が抱えている問題は、レポートがデータを収集してレポートを印刷している間、ポップアップが応答せず、キャンセルボタンが通常何もしないことです。運が良ければ正しいタイミングでコードが呼び出されることもありますが、ボタンを押し込む必要があります。

おそらくスレッド化が答えだと思いましたが、それを使用して機能するソリューションは見つかりませんでした。いくつかのDoEventが散在していますが、それは実際には答えではありません。

誰かが解決策を持っているのではないかと思っています。

本当にありがとう

4

1 に答える 1

1

印刷ジョブを別のスレッドに入れることをお勧めします。

プログラムを印刷する準備ができたら、ウィンドウポップアップ(モーダルフォーム)を表示します。このウィンドウポップアップ(OnLoadメソッド)内で、たとえばBackGroundWorkerクラスを使用してワーカースレッドを開始し、印刷が終了したとき、または[キャンセル]ボタンが押されたときにこのダイアログを閉じます。

于 2012-08-30T23:17:25.897 に答える