

VisualBasic .net framework 4.0 windows7でチャートコントロールを利用してローソク足を表示させています。

この時個々のローソク足、chart.series.item()に対してチャート上でマウスでクリックすることでどのローソク足がクリックされたかを検出したいのです。

なにかヒントになるような情報などございましたらご示唆頂けますでしょうか？

よろしくお願いいたします。


CC BY-SA 3.0
2017-05-27T12:12:44.473
35069
2017-05-27T17:04:30.703
23400
question
vb.net
チャートコントロールでチャートの要素にアクセスする方法


`Chart`コントロールには`HitTest`メソッドが用意されており、コントロール上の座標を指定するとその位置に描画されているオブジェクトを調べることが出来ます。これを利用して`Click`イベントで

[code]

    ' カーソル位置を求める
    Dim pos = DirectCast(e, MouseEventArgs).Location
    
    // カーソル位置にある要素の判定
    Dim result = Chart1.HitTest(pos.X, pos.Y, ChartElementType.DataPoint)
    
    // 該当するデータポイントがあるか判定する
    If result.ChartElementType = ChartElementType.DataPoint Then
        Dim dp = result.Series(result.PointIndex)
        // 適当な処理
    
[/code]

とヒットテストを行い、結果の`ChartElementType`, `Series`,
`PointIndex`を参照すれば`DataPoint`が区別できます。なお`MouseEventArgs`が利用できない場合は`Chart1.PointToClient(MousePosition)`でカーソル位置が求められます。


CC BY-SA 3.0
2017-05-27T17:04:30.703
35075
2017-05-27T17:04:30.703
5750
35069
answer