C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[5]: PrintDocumentの「印刷中」ダイアログの表示位置


(過去ログ 102 を表示中)

[トピック内 6 記事 (1 - 6 表示)]  << 0 >>

■61251 / inTopicNo.1)  PrintDocumentの「印刷中」ダイアログの表示位置
  
□投稿者/ 五右衛門 (6回)-(2011/08/07(Sun) 17:07:49)

分類:[VB.NET/VB2005 以降] 

(開発言語:VB2008)
いつもお世話になっております。
今回の質問は、PrintDocumentの「印刷中」ダイアログや、PrintPreviewDialogの「プレビューを生成中」ダイアログなどの
表示位置についてです。
これらダイアログは、画面の左上の方に表示されますが(ただし、「印刷中」と「プレビューを生成中」の表示位置はちょっと違った)、
この表示位置をモニターの中心(FormのStartPosition=CenterScreenに相当)またはオーナーフォームの中心(同、CenterParentに相当)に
表示させたいのですが、これは可能でしょうか?

アドバイスの程、よろしくお願いします。
引用返信 編集キー/
■61252 / inTopicNo.2)  Re[1]: PrintDocumentの「印刷中」ダイアログの表示位置
□投稿者/ 魔界の仮面弁士 (2290回)-(2011/08/07(Sun) 17:38:05)
No61251 (五右衛門 さん) に返信
> 今回の質問は、PrintDocumentの「印刷中」ダイアログ
下記のようにすれば、「印刷中」ダイアログを非表示にしたり、あるいは
独自のダイアログに差し替えることができるかと。
http://dobon.net/vb/dotnet/graphics/hideprintingdialog.html
引用返信 編集キー/
■61253 / inTopicNo.3)  Re[2]: PrintDocumentの「印刷中」ダイアログの表示位置
□投稿者/ 五右衛門 (7回)-(2011/08/07(Sun) 20:57:51)
No61252 (魔界の仮面弁士 さん) に返信

魔界の仮面弁士様、いつもありがとうございます。
dobonのサイトを拝見しました。
ただ、「印刷中」ダイアログを非表示にする方法は確認できたのですが、
「印刷中」ダイアログを独自のものに差し替える方法が上記サイトには見当たりませんでした。
おそらく、PrintControllerクラスを継承したクラスを作成すればいいのでしょうが、
「印刷中」ダイアログに関する公開メンバが見当たらないので、全く見当がつきません。

あと、PrintPreviewDialogの「プレビューを生成中」ダイアログの操作については、
上記サイトでも不明であると記載されています。
今後は、PrintPreviewDialogの代わりにPrintPreviewControlを使用しようと検討していますが、
こちらについても「プレビューを生成中」ダイアログの操作は無理なのでしょうか?

アドバイスの程、よろしくお願いします。
引用返信 編集キー/
■61255 / inTopicNo.4)  Re[3]: PrintDocumentの「印刷中」ダイアログの表示位置
□投稿者/ Azulean (814回)-(2011/08/07(Sun) 23:32:53)
No61253 (五右衛門 さん) に返信
> おそらく、PrintControllerクラスを継承したクラスを作成すればいいのでしょうが、
> 「印刷中」ダイアログに関する公開メンバが見当たらないので、全く見当がつきません。

魔界の仮面弁士さんも「独自のダイアログに差し替えることができるかと」と書かれているように、自分でダイアログを作ることです。
OnStartPrint メソッドでダイアログを作成・表示し、OnStartPage メソッドで状態を更新し、OnEndPrint メソッドでダイアログを消せばよいのではないでしょうか。

http://msdn.microsoft.com/ja-jp/library/system.drawing.printing.printcontroller_methods.aspx


> 今後は、PrintPreviewDialogの代わりにPrintPreviewControlを使用しようと検討していますが、
> こちらについても「プレビューを生成中」ダイアログの操作は無理なのでしょうか?

こちらは何とも言いかねます。(知らない&調べていないので…)
引用返信 編集キー/
■61257 / inTopicNo.5)  Re[4]: PrintDocumentの「印刷中」ダイアログの表示位置
□投稿者/ 魔界の仮面弁士 (2292回)-(2011/08/08(Mon) 04:33:56)
2011/08/08(Mon) 04:36:49 編集(投稿者)

No61255 (Azulean さん) に返信
>>「印刷中」ダイアログに関する公開メンバが見当たらないので、全く見当がつきません。
> 魔界の仮面弁士さんも「独自のダイアログに差し替えることができるかと」と書かれているように、自分でダイアログを作ることです。
ですです。フォロー感謝。

標準では、進捗表示機能付きの PrintControllerWithStatusDialog が使われていますが、
StandardPrintController を使えば進捗表示をオフにできますし、あるいは
StandardPrintController の派生クラスを用意するなどして、そこから Azulean さんが
記載されているタイミングで、自作 Form を代わりに表示させることもできます。

http://ascii.asciimw.jp/pb/msdn/article/a35_0056.html
http://msdn.microsoft.com/en-us/magazine/cc188767.aspx

上記では、自作フォームを使う代わりに、ProgressBar で進捗表示させていますが、
考え方としては同じです。


No61253 (五右衛門 さん) に返信
>今後は、PrintPreviewDialogの代わりにPrintPreviewControlを使用しようと検討していますが、
>こちらについても「プレビューを生成中」ダイアログの操作は無理なのでしょうか?
PrintPreviewDialog / PrintPreviewControl は、出力直前に PrintController を
PreviewPrintController へと差し替えてしまうようで、置き換えることはできなさそうです。

内部ではいわば、
 With document
  Dim org = .PrintController
  .PrintController = New PrintControllerWithStatusDialog(New PreviewPrintController(), "プレビューを生成しています")
  .Print
  .PrintController = org
 End With
のような作業が行われているのでしょう。

どうしても必要なら、PrintPreviewControl すら使わずに、PreviewPrintController などから
PreviewPageInfo を得て、独自のプレビュー機能を作り上げるといった手間が必要かと。多分。

もしくはダイアログの表示を監視して、プレビュー開始時に API で位置制御を行うという手も
考えましたが……いずれにせよ、標準的な方法としての位置制御機能は用意されていないと思います。
引用返信 編集キー/
■61265 / inTopicNo.6)  Re[5]: PrintDocumentの「印刷中」ダイアログの表示位置
□投稿者/ 五右衛門 (8回)-(2011/08/08(Mon) 10:45:04)
2011/08/08(Mon) 10:45:41 編集(投稿者)

(解決チェックつけ忘れ)

Azulean様、魔界の仮面弁士様、ご回答ありがとうございました。

印刷時のダイアログについては、とりあえずは表示しないことにして、自作ダイアログの作成については
今後の課題とすることにして、教えて頂いたサイトの内容を、時間の余裕のあるときにでも勉強しようと思います。

また、プレビュー時のダイアログについては、カスタマイズは一筋縄ではいかなさそうなので、
既存の状態で使用することにしようと思います。

色々とありがとうございました。
とりあえず、このスレッドはクローズしたいと思います。
今後ともよろしくお願い申し上げます。
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -