私は を持っておりSystem.Windows.Forms.DataVisualization.Charting.chart
、チャート上にカーソルを置いたときにバーに関する情報を表示したいと考えています。しかし、ツールチップを設定する場所がわかりません。
私はこれを設定することができますchart3.Series[0].ToolTip = "hello world";
しかし、テキストを変更するためにホバリングしている値x
または値を取得するにはどうすればよいですか?y
作成時に DataPoint にツールチップを追加することもできます
DataPoint point = new DataPoint();
point.SetValueXY(x, y);
point.ToolTip = string.Format("{0}, {1}", x, y);
series.Points.Add(point);
私の意見では、これは GetToolTipText イベントのテキストを置き換えるよりも少しきれい/きれいです
this.chart1.GetToolTipText += new System.EventHandler<System.Windows.Forms.DataVisualization.Charting.ToolTipEventArgs>(this.Chart1_GetToolTipText);
...
// [2] in x.cs file.
private void Chart1_GetToolTipText(object sender, System.Windows.Forms.DataVisualization.Charting.ToolTipEventArgs e)
{
// Check selevted chart element and set tooltip text
if (e.HitTestResult.ChartElementType == ChartElementType.DataPoint)
{
int i = e.HitTestResult.PointIndex;
DataPoint dp = e.HitTestResult.Series.Points[i];
e.Text = string.Format("{0:F1}, {1:F1}", dp.XValue, dp.YValues[0] );
}
}
それは私の金融 (スティック、ローソク足) チャートの仕事です。YValue[0]
ほとんどのDataPoint
例ではなく、YValue
Y 軸の例を示します。
Point? prevPosition = null;
ToolTip tooltip = new ToolTip();
private void chart_MouseMove(object sender, MouseEventArgs e)
{
var pos = e.Location;
if (prevPosition.HasValue && pos == prevPosition.Value)
return;
tooltip.RemoveAll();
prevPosition = pos;
var results = chart.HitTest(pos.X, pos.Y, false, ChartElementType.DataPoint); // set ChartElementType.PlottingArea for full area, not only DataPoints
foreach (var result in results)
{
if (result.ChartElementType == ChartElementType.DataPoint) // set ChartElementType.PlottingArea for full area, not only DataPoints
{
var yVal = result.ChartArea.AxisY.PixelPositionToValue(pos.Y);
tooltip.Show(((int)yVal).ToString(), chart, pos.X, pos.Y - 15);
}
}
}