9

私は を持っておりSystem.Windows.Forms.DataVisualization.Charting.chart、チャート上にカーソルを置いたときにバーに関する情報を表示したいと考えています。しかし、ツールチップを設定する場所がわかりません。

私はこれを設定することができますchart3.Series[0].ToolTip = "hello world";

しかし、テキストを変更するためにホバリングしている値xまたは値を取得するにはどうすればよいですか?y

4

4 に答える 4

9

作成時に DataPoint にツールチップを追加することもできます

DataPoint point = new DataPoint();
point.SetValueXY(x, y);
point.ToolTip = string.Format("{0}, {1}", x, y);
series.Points.Add(point);

私の意見では、これは GetToolTipText イベントのテキストを置き換えるよりも少しきれい/きれいです

于 2013-02-02T06:42:52.233 に答える
4
    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] );
   }
}
于 2012-08-19T09:57:49.933 に答える
1

それは私の金融 (スティック、ローソク足) チャートの仕事です。YValue[0]ほとんどのDataPoint例ではなく、YValueY 軸の例を示します。

    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);
            }
        }
    }
于 2016-02-24T05:12:45.453 に答える