タイトル : ユーザーコントロールについて 投稿日 : 2009/11/17(Tue) 17:16 投稿者 : たっち
VB2008にてグラフを出力するプログラムを作成しているのですが、動いてくれません。 どこがおかしいのかをご教授願いたいです。 ・グラフの描写には「zedgraph」というオープンソースのクラスを使っています。 ・ユーザーコントロールとしてクラスを作ると上手く動いてくれません。 ・参考:http://www.atmarkit.co.jp/fdotnet/vblab/extcompo_02/zedgraph_04.html ・ユーザーコントロールに貼り付けたグラフのnameは「zg1」になってます 以下フォームのソース Public Class Form1 Dim test2 As New draw_graph Private Sub cmdInvisible_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles cmdInvisible.Click Dim x2 As Integer x2 = txtvalur1.Text test2.output_linegraph(x2) End Sub End Class 以下ユーザーコントロールクラスのソース Imports ZedGraph Public Class draw_graph Dim list As New PointPairList Dim i As Integer Private Sub Form_Load(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles MyBase.Load Create_LineGraph(zg1) ' 折れ線グラフ End Sub ' グラフの出力 Public Sub output_linegraph(ByRef x As Double) list.Add(i, x) draw_linegraph(zg1, list) i += 1 End Sub ' グラフの描写 Private Sub draw_linegraph(ByVal zg As ZedGraphControl, _ ByVal list As PointPairList) Create_LineGraph(zg) zg.GraphPane.CurveList.Clear() Dim myPane As GraphPane = zg.GraphPane Dim myCurve As LineItem myCurve = myPane.AddCurve( _ "測定値", list, Color.Red, SymbolType.Diamond) myCurve.Symbol.Fill = New Fill(Color.White) ' ラインの色 ' グラフの際描写 zg.AxisChange() zg.Invalidate() End Sub ' グラフの設定 Private Sub Create_LineGraph(ByVal zg As ZedGraphControl) Dim myPane As GraphPane = zg.GraphPane ' グラフ/X軸、Y軸のタイトル設定 myPane.Title.Text = "線グラフのサンプル" myPane.XAxis.Title.Text = "時間" myPane.YAxis.Title.Text = "値" ' X軸の目盛りを描画 myPane.XAxis.MajorGrid.IsVisible = True ' Y軸のスケールを赤に myPane.YAxis.Scale.FontSpec.FontColor = Color.Red myPane.YAxis.Title.FontSpec.FontColor = Color.Red ' 反対側のY軸の目盛りの描画 myPane.YAxis.MajorTic.IsOpposite = False myPane.YAxis.MinorTic.IsOpposite = False ' Yが0の位置の水平線 myPane.YAxis.MajorGrid.IsZeroLine = True myPane.YAxis.Scale.Align = AlignP.Inside ' Y軸の範囲を指定する myPane.YAxis.Scale.Min = -20 myPane.YAxis.Scale.Max = 30 myPane.YAxis.IsVisible = True ' グラフ領域の内側をグラデーションに myPane.Chart.Fill = _ New Fill(Color.White, Color.LightGray, 45.0F) ' テキストボックスをグラフの左下に描画 Dim text As New TextObj( _ "Zoom: 左のマウスボタンでドラッグ" & Chr(10) & _ "Pan: Ctrl+左ボタンでドラッグ" & Chr(10) & _ "Context Menu: 右ボタン", _ 0.05F, 0.95F, CoordType.ChartFraction, AlignH.Left, AlignV.Bottom) text.FontSpec.StringAlignment = StringAlignment.Near myPane.GraphObjList.Add(text) ' スクロールバーは非表示 zg.IsShowHScrollBar = False zg.IsShowVScrollBar = False zg.IsAutoScrollRange = True ' ポイントの値をToolTip風に表示する zg.IsShowPointValues = True zg.AxisChange() End Sub End Class VB暦一ヶ月初心者が書いたコードですので可笑しい所は多々あると思いますが、 どこが致命的なのかを指摘していただければ幸いです。 よろしくお願いいたします。 |