Can anyone help me to check my code? When my mouse hover to the line graph, it does not pop up tooltip to show the information. Is it anything wrong? Thank you.
My idea is when the mouse move along the line graph, it will pop out a tootip to shpw the x-axis value and y-axis value, but there is nothing pop out when my mouse over the line graph. Here is my code, the mouse over event I copied from somewhere else:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Windows.Forms.DataVisualization.Charting;
namespace Project42
{
public partial class Form1 : Form
{
static class Program
{
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1());
}
}
public Form1()
{
InitializeComponent();
chart1.Series[0].Points.AddXY("A", 1);
chart1.Series[0].Points.AddXY("B", 12);
chart1.Series[0].Points.AddXY("C", 23);
chart1.Series[0].Points.AddXY("D", 32);
chart1.Series[0].Points.AddXY("E", 39);
chart1.Series[0].Points.AddXY("F", 43);
chart1.Series[0].Points.AddXY("G", 55);
chart1.Series[0].Points.AddXY("H", 59);
chart1.Series[0].Points.AddXY("I", 67);
}
Point? prevPosition = null;
ToolTip tooltip = new ToolTip();
void chart1_MouseMove(object sender, MouseEventArgs e)
{
var pos = e.Location;
if (prevPosition.HasValue && pos == prevPosition.Value)
return;
tooltip.RemoveAll();
prevPosition = pos;
var results = chart1.HitTest(pos.X, pos.Y, false,
ChartElementType.DataPoint);
foreach (var result in results)
{
if (result.ChartElementType == ChartElementType.DataPoint)
{
var prop = result.Object as DataPoint;
if (prop != null)
{
var pointXPixel = result.ChartArea.AxisX.ValueToPixelPosition(prop.XValue);
var pointYPixel = result.ChartArea.AxisY.ValueToPixelPosition(prop.YValues[0]);
// check if the cursor is really close to the point (2 pixels around the point)
if (Math.Abs(pos.X - pointXPixel) < 2 &&
Math.Abs(pos.Y - pointYPixel) < 2)
{
tooltip.Show("X=" + prop.XValue + ", Y=" + prop.YValues[0], this.chart1,
pos.X, pos.Y - 15);
}
}
}
}
}
}
}