Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/322.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 当鼠标移动到直线图(Mschart)上时,显示点的#值_C#_Visual Studio_.net 3.5_Tooltip_Mschart - Fatal编程技术网

C# 当鼠标移动到直线图(Mschart)上时,显示点的#值

C# 当鼠标移动到直线图(Mschart)上时,显示点的#值,c#,visual-studio,.net-3.5,tooltip,mschart,C#,Visual Studio,.net 3.5,Tooltip,Mschart,在VisualStudio2008中,关于C#的Mscharts一般没有太多文档。我已经研究了很多解决方案,但似乎没有任何效果!当用户将鼠标悬停在数据点的线上时,应显示该特定点的值,当失去焦点时应消失。我知道最好的方法是在图表中添加工具提示,但我的问题实际上是从数据点获取值。该图表目前看起来是这样的,只是用于测试的硬编码数据,但将从文件中导入数据: _注意:我确实意识到这些线是不现实的——无论如何,对我的项目来说都不现实。这只是为了测试。当我完成项目后,将有几个数据点_ 添加系列和数据点: 修

在VisualStudio2008中,关于C#的Mscharts一般没有太多文档。我已经研究了很多解决方案,但似乎没有任何效果!当用户将鼠标悬停在数据点的线上时,应显示该特定点的值,当失去焦点时应消失。我知道最好的方法是在图表中添加工具提示,但我的问题实际上是从数据点获取值。该图表目前看起来是这样的,只是用于测试的硬编码数据,但将从文件中导入数据:

_注意:我确实意识到这些线是不现实的——无论如何,对我的项目来说都不现实。这只是为了测试。当我完成项目后,将有几个数据点_

添加系列和数据点: 修改图形: 鼠标移动事件:
我不知道如何为数据点自动创建工具提示,鼠标悬停时激活,然后将其删除。光标线工作正常

为您的问题提供答案

chart1.Series[0].Points[n].ToolTip = "#VALX";

使用折线图进行了尝试和测试。

比我最初想象的要简单:)填充图形非常复杂,这很可能就是我如此困惑的原因

string info = "Value: " + "#VAL{N2}" + "\n" + "Average: " + "#AVG{N2}" + "\n" + "Minimum: " + "#MIN{N2}" + "\n" + "Maximum: " + "#MAX{N2}" + "\n"
            + "First: " + "#FIRST{N2}" + "\n" + "Last: " + "#LAST{N2}";

Chart1.Series[0].ToolTip = "Series name..." + "\n" + info;
Chart1.Series[1].ToolTip = "Series name2..." + "\n" + info;
Chart1.Series[2].ToolTip = "Series name3..." + "\n" + info;

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);
}

标记为解决方案的是正确的,但不太清楚,我想补充详细信息

在填充图形之后,您应该构造字符串
info
变量,该变量包含像我这样的分析师将要评估的所有漂亮信息

那些符号是什么样的
VAL{N2}
? 这些符号有一个不同的含义

string info=“Value:”+“#VAL{N2}”+”\n“+”平均值:“+”\n“+”最小值:“+”#最小值{N2}”+“\n”+”最大值:“+”#最大值{N2}”+“\n”
+“First:”+“#First{N2}”+“\n”+“Last:”+“#Last{N2}”;
Grafico.Series[“valores”]。工具提示=“Detalles…”+“\n”+信息;
Grafico.Series[“valores2]”。工具提示=“Detalles…”+“\n”+信息;
其中,
valores
valores2
是不同的图形

然后添加一个过程,给出鼠标在图形上移动的说明,它应该可以工作

private void Grafico_MouseMove(对象发送方,MouseEventArgs e)
{
HitTestResult=Grafico.HitTest(e.X,e.Y);
System.Drawing.Point p=新的System.Drawing.Point(e.X,e.Y);
Grafico.ChartAreas[“valores”]。CursorX.Interval=0;
Grafico.ChartAreas[“valores2”].CursorX.SetCursorPixelPosition(p,真);
}

你想要像工具提示一样的工具提示吗?那没有意义吗?是的,我想要上面指定的工具提示。类似于
serie.tooltip=“X:#VALX Y:#VALY”?我试过了,但没用。。。已尝试:chart1.Series[0]。工具提示=“#VAL”;(简单测试)同样,由于某些原因,它根本不起作用。这可以在ms charts的web版本中完成吗?我没有看到列出此事件。
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].CursorX.LineColor = Color.Crimson;
    chart1.ChartAreas[0].CursorX.LineWidth = 1;
    chart1.ChartAreas[0].CursorY.SetCursorPixelPosition(p, true);
    chart1.ChartAreas[0].CursorY.LineColor = Color.Crimson;
    chart1.ChartAreas[0].CursorY.LineWidth = 1;
}
chart1.Series[0].Points[n].ToolTip = "#VALX";
string info = "Value: " + "#VAL{N2}" + "\n" + "Average: " + "#AVG{N2}" + "\n" + "Minimum: " + "#MIN{N2}" + "\n" + "Maximum: " + "#MAX{N2}" + "\n"
            + "First: " + "#FIRST{N2}" + "\n" + "Last: " + "#LAST{N2}";

Chart1.Series[0].ToolTip = "Series name..." + "\n" + info;
Chart1.Series[1].ToolTip = "Series name2..." + "\n" + info;
Chart1.Series[2].ToolTip = "Series name3..." + "\n" + info;

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);
}