如何使用工具提示中的值并对其进行简单的数学运算?



我正在使用Windows窗体并有一个折线图。我有一个包含以下代码的工具提示:

private void chart1_MouseMove(object sender, MouseEventArgs e)
{
HitTestResult result = chart1.HitTest(e.X, e.Y);
System.Drawing.Point p = new System.Drawing.Point(e.X, e.Y);`
chart1.ChartAreas[0].CursorX.Interval = 0;
chart1.ChartAreas[0].CursorX.SetCursorPixelPosition(p, true);
chart1.ChartAreas[0].CursorY.SetCursorPixelPosition(p, true);
chart1.Series[0].ToolTip = getLegendName(legendOne) + "n" + info;
if (chart1.Series.IndexOf(legendTwo) == 1)
{
chart1.Series[1].ToolTip = getLegendName(legendTwo) + "n" + info;
}
if (chart1.Series.IndexOf(legendThree) == 2)
{
chart1.Series[2].ToolTip = getLegendName(legendThree) + "n" + info;
}
if (chart1.Series.IndexOf(legendFour) >= 3)
{
chart1.Series[3].ToolTip = getLegendName(legendFour) + "n" + info;
}
}

我现在希望在弹出工具提示时单击,以便我可以获得 Y 值。我想做两次,这样我就可以取第 2 点和第 1 点之间的差异来找到 2 个特定点之间的总体差异。

private void chart1_Click(object sender, EventArgs e)
{
if (diffCounter == 0)
{
valXOne = "#VALX";
Console.WriteLine("VALX " + valXOne);
diffCounter++;
}
if (diffCounter == 1)
{
valXTwo = "#VALX";
diffCounter++;
}
diffCounter = 0;
double xOne = 0;
double xTwo = 0;
if (double.TryParse(valXOne, out double resultOne))
{
xOne = resultOne;
}
if (double.TryParse(valXTwo, out double resultTwo))
{
xTwo = resultTwo;
}
pointDifferenceTextBox.Text = (Math.Abs(xTwo - xOne)).ToString();
}

我当前的代码不起作用,但我试图按照它的思路制作它。我只是不知道如何从工具提示中读取值。工具提示理解字符串"#VALX",但普通字符串当然不能。如何访问或读取变量 valXONE 的此值?

在您的情况下,无需访问Tooltip文本。

只需使用HitTest来确定您击中的点并直接读取其值!

无论如何,工具提示表达式都会从中获取"#VALX",这将是其中

。以下是点击事件的更正版本:

int diffCounter = 0;
double xOne = 0;
double xTwo = 0;
private void chart1_MouseClick(object sender, MouseEventArgs e)
{
HitTestResult result = chart1.HitTest(e.X, e.Y);
if (result.PointIndex >= 0)
{
if (diffCounter == 0)
{
xOne = result.Series.Points[result.PointIndex].XValue;
diffCounter++;
Console.WriteLine("VALX 2 " + xOne  );
}
else if (diffCounter == 1)
{
xTwo = result.Series.Points[result.PointIndex].XValue;
diffCounter = 0;
Console.WriteLine("VALX 1 " + xTwo  );
}
Console.WriteLine("Delta = " +( xTwo - xOne) );
}
}

请注意,除了自动表达式值之外,您还可以为每个DataPoint.ToolTip设置固定值。这些可能会感兴趣,您可以直接从该物业领取它们。

相关内容

最新更新