|
2017/02/02(Thu) 18:00:20 編集(投稿者)
■No82766 (夜叉丸 さん) に返信 > フォームのコンストラクタに引数で表示するデータを変えるのと同じ考えで。 > こうなりました。
その場合でも、 Form2 f1 = new Form2(arg1, arg2); Form2 f2 = new Form2(arg3, arg4); のように、フォームのインスタンスは 2 つ用意されますよね?
PrintDocument のインスタンスが 2 つ必要なのも、それと同じ理由です。
印刷処理の共通化、という点に関しては、たとえば pdocMain.PrintPage += (o, arg) => 印刷処理( main用引数, arg ); pdocSub.PrintPage += (o, arg) => 印刷処理( sub用引数, arg ); のように、引数で動作を変える印刷処理メソッドやクラスを用意すれば OK。
あるいは No82763 で示したように、両インスタンスに対して 同じイベント実装を割り当て、sender で判定するのも手です。
> pdocSub = pdocMain; ← Main と同じ印刷状態にして これでは意味がありません。
上記の場合、PrintDocument のインスタンスは一つだけであり、 それを「pdocMain」と「pdocSub」の二箇所から 参照している形になってしまいます。
|