- ベストアンサー
C# 2010 printPreviewDialogの消去法
- C# 2010 printPreviewDialogの消去法について知りたいです。
- 印刷プレビューのダイアログが表示され続ける問題について、解決策を教えてください。
- printPreviewDialog1.ShowDialog()から戻ってこない問題について、対処方法を教えてください。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
元のフォームに制御が戻ってこないのに button1をクリックできてしまっているのですか? そのほうが不思議なんですが ・・・ 実際にそのエラーが出る手順を投稿してみましょう マルチスレッドとかで別な制御が働いているのでしょうか ・・・ お好みのことを実現するには PrintDocumentのEndPrintイベントを使うことになりそうですよ private void printDocument1_EndPrint( 引数省略 ) { // 引数のプロパティから印刷プレビューではない場合 if ( e.PrintAction != System.Drawing.Printing.PrintAction.PrintToPreview ) { // printPreviewDialog1が破棄されていなければ if ( !printPreviewDialog1.IsDisposed ) { // ダイアログを閉じる printPreviewDialog1.Close(); } } } といった具合になると思います
その他の回答 (1)
> 印刷プレビューのダイアログを表示して左上のプリンタ釦を押下して印刷します > 印刷が完了してもダイアログは表示され続けています > この状態でもう一度ボタン1を押すと(1)のところで下記のエラーが起こります ボタン1を再度押す前に、このプレビューダイアログを ダイアログの「閉じる」ボタンとか、右上のXボタンを押しても 閉じないのでしょうか? 閉じてないからエラーになっているのだと思います。 ShowDialogは表示したダイアログを閉じないと、次の行に制御が移りません。 > フォームを閉じろといわれても printPreviewDialog1.ShowDialog(); > から戻ってきません。(2)が表示されないのです。 閉じるべきフォームは、(2)で表示する(予定の)メッセージボックスではなく、 印刷プレビューのダイアログです。
お礼
ご指導ありがとうございました おかげさま色々と勉強させて頂きました 今後とも宜しくお願い申しあげます ありがとうございました
補足
ご指導ありがとうございます 『ボタン1を再度押す前に、このプレビューダイアログをダイアログの「閉じる」ボタンとか、右上のXボタンを押しても閉じないのでしょうか?』 もちろん閉じるを押すとダイアログは消去され、その後にボタン1を押下しても正常に動作します 作成しているプログラムは汎用的なものであり、操作手順をあまり制限できません 閉じる釦を押さなくてもエラーが発生しない方法を模索しております ダイアログ表示中はボタン1を消去し、ダイアログから戻ったらボタン1を再点灯することでエラーを回避することは単純ですが、これではあまりのも姑息過ぎます printPreviewDialogは多用されていますので、一般的な方法が確立されているのではないかと思い質問させて頂いております 更なるご指導をお願い申上げる次第であります 誠にありがとうございました
お礼
>元のフォームに制御が戻ってこないのに button1をクリックできてしまっているのですか? >そのほうが不思議なんですが ・・・ ごめんなさい 説明を簡単にするために button としてしまいましたが、本当は nortifyIcon なんです nortifyIconなら常時押下できます 不精な説明をして申し訳ありませんでした ダイアログの閉じ方はそのまま利用させて頂いたところ、一発OKでした ありがとうございました