ショボ短歌会

VB2005初心者で困っています。
Menu.vbとForm1.vb, Form2vb, Form3.vb・・・を作り、Menu.vbのButton1_ClickでForm1.Show()としてForm1.vbに移行し、次にForm1のButton1_clickイベントでExcelからDataを読み込んでGraphを書かせています。(この時は問題なく動作しています)
これを、Form1に移行したらすぐにGraphを表示しようとして、Form1.vbの
Public Class Form1
Private Sub Button_Clic(Byval sender As System・・・・・)Handles Button1.click
  Dim g As Graphics
  ・・・・
を変更して、
 Private Sub Form1_Load(Byval sender As System・・・・)Handles MyBase.load
Me.Show()
Dim g As Graphics
  ・・・・
と、しましたが、一瞬Graphは表示しますが、すぐに消えます。
また、罫線はまったく表示しません。
Button_ClickイベントなしでForm1を動かすにはどうすればよいのでしょうか?

A 回答 (2件)

Form1.Showで呼ばれたForm1_Load中で、Me.Show() を書いても、たぶん意味がありませんね。


(と言うか、そういう書き方をした事すら無い)
Showしない状態で(.NETだとインスタンスを生成したらLoadイベントは…発生するのか?
調べたこと無いけど…)Form1_Loadが呼ばれたなら、効果あると思いますが…

問題の現象は、一度表示しようとはするものの、Form_Loadが完了した時点で
Formが初期化されて、消えてるのかもしれません。
Form_Loadではなく、Form_Shownイベントで、グラフの描画を行ってみれば、
改善されるかもしれません。

なお、No.1のredfox63氏の指摘にもあるように、グラフィックスはメモリ上に
Bitmapで展開してから、それを参照するのが上策です。
直接書いただけでは、他のウインドウで隠されたりした時点で、消えてしまいます。
    • good
    • 0
この回答へのお礼

ご回答をいただきありがとうございました。
VBは初心者のためよく解らないことがあり、色々な本の寄せ集めになっているため、変なProgramになっているかもしれません。
Form_Shownイベントは早速確かめてみましたが、やはりせっかく表示したGraphや数値がすぐに消えてしまいました。
多分、ご指摘の通りFormが初期化されて消えているのだと思います。
もう少し検討してみます。
BTMについては単純な画像の表示ではなく、DrawLineやDrawStringでExcel Dataの分析結果を表示していますが、これも間違いでしょうか?

お礼日時:2008/05/16 20:40

お作法に沿ったプログラミングをしましょう



一般的なVB.NETアプリなら 描画担当はPaintイベントが担当します

直接ControlやFormなどから Graphicsオブジェクトを構築して
描画するのは一時的な描画です

恒久的な描画をさせたいなら ImageかBitmapからGraphicsオブジェクトを作成し、描画処理を行い、GraphicsオブジェクトをDisposeしてから
その元になった ImageまたはBitmapをコンテナのImageやBackgroundImageなどに設定しましょう
    • good
    • 0
この回答へのお礼

ありがとうございました。
もう少し勉強します。

お礼日時:2008/05/11 21:52

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!