質問: VisualBasic .net framework 4.0 windows7でチャートコントロールを利用してローソク足を表示させています。 この時個々のローソク足、chart.series.item()に対してチャート上でマウスでクリックすることでどのローソク足がクリックされたかを検出したいのです。 なにかヒントになるような情報などございましたらご示唆頂けますでしょうか? よろしくお願いいたします。
回答: `Chart`コントロールには`HitTest`メソッドが用意されており、コントロール上の座標を指定するとその位置に描画されているオブジェクトを調べることが出来ます。これを利用して`Click`イベントで ``` ' カーソル位置を求める 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) // 適当な処理 ``` とヒットテストを行い、結果の`ChartElementType`, `Series`, `PointIndex`を参照すれば`DataPoint`が区別できます。なお`MouseEventArgs`が利用できない場合は`Chart1.PointToClient(MousePosition)`でカーソル位置が求められます。