掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
クリック位置からデータを特定するには? (ID:147896)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
何度もすみません。 ローソク足をクリックすることで、その該当するデータを特定したく、あれこれ探しいてる内にここに行き着きました。 http://www.hanatyan.sakura.ne.jp/dotnet/chart24.htm 使えるかと思い、早速試しては見るもののエラーが出て四苦八苦しています。 なにぶん能力不足でどうにもなりません。 お手数をお掛けしますがよろしくお願いします。 Public Class Form1 Private frgElement As Boolean ' Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Dim tbl As New DataTable '列の作成 With tbl.Columns .Add("日付", GetType(String)) .Add("高値", GetType(Integer)) .Add("安値", GetType(Integer)) .Add("始値", GetType(Integer)) .Add("終値", GetType(Integer)) End With 'データの追加 tbl.Rows.Add("2012/08/1", 700, 300, 650, 550) tbl.Rows.Add("2012/08/2", 500, 200, 300, 400) tbl.Rows.Add("2012/08/7", 650, 400, 600, 450) tbl.Rows.Add("2012/08/8", 800, 300, 300, 550) '初期化 Chart1.Series.Clear() 'グラフの種類,系列,軸の設定 Dim rosoku = Chart1.Series.Add("ローソク足") With rosoku .ChartType = DataVisualization.Charting.SeriesChartType.Candlestick .XValueMember = "日付" .YValueMembers = "高値, 安値, 始値, 終値" .IsVisibleInLegend = False End With Chart1.DataSource = tbl Chart1.DataBind() Chart1.ChartAreas(0).AxisX.MajorGrid.Enabled = False Chart1.ChartAreas(0).AxisX.MinorGrid.Enabled = False End Sub Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click 'Microsoft Chart Control で クリックした位置の要素を取得 frgElement = Not frgElement 'クリック毎にフラグを設定 End Sub Private Sub Chart1_MouseClick(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Chart1.MouseClick 'クリックした位置の要素を取得 Dim htrResult As HitTestResult = Chart1.HitTest(e.X, e.Y) If htrResult.ChartElementType = ChartElementType.DataPoint And frgElement = True Then Dim i As Integer = htrResult.PointIndex Dim dp As DataPoint = htrResult.Series.Points(i) For j As Integer = 0 To Chart1.Series.Count - 1 If Chart1.Series(j).Name = htrResult.Series.Name Then Dim SeriesNo As Integer = j ' Debug.Print(SeriesNo.ToString) Exit For End If Next 'クリックした位置の要素を表示 MessageBox.Show(String.Format("{0}({1}) : {2}", htrResult.Series.Name, dp.AxisLabel, dp.YValues(0))) End If End Sub End Class
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.