したらばTOP ■掲示板に戻る■ 全部 1-100 最新50 | メール | |

VB2005 グラフについて

1こじら:2010/08/16(月) 14:46:05
こんにちは、もう一件お聞きしたいことがありました。
それは、
 Form1のボタンを押しForm2を開きForm2にグラフを表示。Form2を
Closeし、再度Form1のボタンを押したらForm2が同様に開く
 現在、再度開くときエラーになり、おそらく以前のForm2
のデータがClose(開放)されてないからかと思われます。
 Closeイベント時 Me.Closeとしていますが(Me=F2です)
うまくいきません。
 開放する仕方教えていただけないでしょうか。
Form2はLoadされると、Form2内のDislay関数が呼ばれ、
グラフを表示します。
 Display関数は X,Y軸、補助線、メモリ上のデータ(配列
格納して)をプロットする
 ものとしています。

2igoten:2010/08/16(月) 15:01:00
Me.Dispose() では。

3こじら:2010/08/16(月) 16:49:42
Me.Disposeもトライしてみましたが
Me.Closeを同じエラーでした。
一部軸の詳細を省いていますが、プログラム
示します。
エラーは以下です
Form2を一度クローズして再度Form1のボタンをクリックした時

「破棄されたオブジェクトにアクセスできません。
 オブジェクト名 'Form2' です。」

となります。すみません、何か思い当たるアドバイス
ありませんでしょうか。

Public Class Form1
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
F2.Show()
End Sub
End Class

Public Class Form2
Private X As Integer
Private PX As Integer
Private PY As Integer
Private oldX As Integer
Private oldY As Integer

Private Sub Form2_Activated(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Activated
Application.DoEvents()
Display()
End Sub

Private Sub Form2_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
'F2.Dispose()
F2.Close()
End Sub

Private Sub Form2_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
F2 = Me
sample = 10
HDIV = 1
Application.DoEvents()
Display()
End Sub


Private Sub Display()
Dim I As Integer
Dim Div As Single
Dim w As Integer = ClientRectangle.Width - 20
Dim h As Integer = ClientRectangle.Height - 20
Dim g As Graphics = CreateGraphics()
g.TranslateTransform(20, h / 2) '座標原点設定
g.ScaleTransform(1, -1)

g.DrawLine(Pens.Blue, 0, 0, w, 0)
g.DrawLine(Pens.Blue, 0, -h \ 2, 0, h \ 2)

For X = 0 To Index - 1
PY = mData(X)
If (X = 0) Then
PX = 0
oldX = PX
oldY = mData(0)
Else
PX = PX + HDIV
g.DrawLine(Pens.Red, oldX, oldY, PX, PY)
oldX = PX
oldY = PY
End If
Next
End Sub
End Class

Module Module1
Public F1 As New Form1
Public F2 As New Form2
Public sample As Integer
Public HDIV As Integer

Public Index As Integer = 40
Public mData() = {0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 3, 17, 18, 19, 20, _
19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0}
End Module


新着レスの表示


名前: E-mail(省略可)

※書き込む際の注意事項はこちら

※画像アップローダーはこちら

(画像を表示できるのは「画像リンクのサムネイル表示」がオンの掲示板に限ります)

掲示板管理者へ連絡 無料レンタル掲示板