none
MDIアプリケーションで子フォームに描画(その2) RRS feed

  • 質問

  • 先日、別スレッドでMDIアプリケーションで子フォームに描画する方法について皆様(特にダッチ様)のお知恵を拝借したものです。前スレッドにおいて、子フォームのPictureBox に描画するにはPaint イベントを使用したり、PictureBox に画像を設定したりする必要があるとアドバイス頂きました。そこでPictureBox に画像を設定する方法を採用して解決したと思っていたのですが、その後私の用途には不向きなことが判明しました。そこでPaint イベントを使用しようと思ったのですが、下記の点がわからずまた皆様のお知恵を拝借したいと思っています。よろしくお願いします。
      現在考えているのは下記のようなコードをMDIアプリケーションに改変し、例えば子フォームのForm2上のPictureBoxにPaintイベントを利用して描画するようにしたいと思っています。しかしMDIアプリケーションでは親フォームのForm1にはPictureBoxがないので、PictureBox.Paintイベントを利用できないように思います。この点をどのように解決すれば良いのでしょうか。どうぞよろしくお願いします。


    Code Snippet
    Public Class Form1
        Private Sub PictureBox_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles PictureBox.Paint
            Dim gr As Graphics = e.Graphics
            gr.DrawLine(Pens.Red, New Point(0, 100), New Point(200, 100))
        End Sub
    End Class

     

    2007年4月14日 14:46

すべての返信

  • qm さん、こんにちは
    ダッチです。

    MDI アプリケーションだからといって、親フォームが子フォーム全ての UI 処理などを行う必要はありません。
    自分の UI 処理だけを意識して処理を行えばいいと思います。

    子フォームの PictureBox に何か描画したいのであれば、その子フォームが自分の持っている PictureBox に描画をしてあげればいいと思います。
    これならば qm さんはもう出来ると思いますよ。

    また、子フォームが PictureBox に Paint イベントを使用して描画ができるなら、PictureBox に画像を設定することも出来るようになると思います。

     qm さんからの引用
    先日、別スレッドでMDIアプリケーションで子フォームに描画する方法について皆様(特にダッチ様)のお知恵を拝借したものです。

    なんだか恥ずかしいです。
    2007年4月15日 7:56
  • ダッチ様

      qmです。MDIアプリケーションの作成法について早速アドバイス頂きありがとうございました。なるほど、子フォームのことは子フォームにやらせると良いのです。確かにその方がコード的にも分かりやすくなると思います。どうも有難うございました。今後とも宜しくお願いします。

    2007年4月16日 8:52
  •  qm さんからの引用
    子フォームのことは子フォームにやらせると良いのです。
    フォームに限らずクラスも同じですね。自分のことは自分でやるようにすれば、必然と
    確かにその方がコード的にも分かりやすくなると思います。
    となりますね。

     qm さんからの引用
    今後とも宜しくお願いします。
    こちらこそ、よろしくお願いします。
    2007年4月16日 9:02