我上了一堂图表课。我给我们的第三方软件添加系列工具提示的能力。但是工具提示不起作用。
有趣的是,工具提示有时在第三方软件中起作用。当我在窗口表单中测试它时,它从来都不起作用.
我做错了什么?
类:
public class DollarChart : System.Windows.Forms.DataVisualization.Charting.Chart初始化:
public void Wrapper_Init()
{
System.Windows.Forms.DataVisualization.Charting.ChartArea chartArea1;
System.Windows.Forms.DataVisualization.Charting.Series MySeries2;
chartArea1 = this.ChartAreas["ChartArea1"];
MySeries2 = this.Series["Series1"];
chartArea1.Name = "Default";
chartArea1.AxisY.IntervalAutoMode = System.Windows.Forms.DataVisualization.Charting.IntervalAutoMode.FixedCount;
chartArea1.AxisY.Enabled = System.Windows.Forms.DataVisualization.Charting.AxisEnabled.True;
chartArea1.AxisY2.IntervalAutoMode = System.Windows.Forms.DataVisualization.Charting.IntervalAutoMode.FixedCount;
// Invisible series in order to make room for primary Y-axis on chartarea.
MySeries2.Points.Add(0);
MySeries2.Points.Add(490);
MySeries2.Color = System.Drawing.Color.FromName("Transparent");
this.Name = "chart1";
}用于插入数据的函数:
public void Wrapper_Populate(System.Single[] AvailDollars, int SeriesSplitter, int PlotHours)
{
System.Double[] Dollars;
Dollars = new System.Double[AvailDollars.Length];
AvailDollars.CopyTo(Dollars,0);
System.Double[] buffer;
buffer = new System.Double[SeriesSplitter];
System.Windows.Forms.DataVisualization.Charting.Series MySeries = new System.Windows.Forms.DataVisualization.Charting.Series();
MySeries.ChartType = System.Windows.Forms.DataVisualization.Charting.SeriesChartType.StackedColumn;
Array.Copy(Dollars, 0, buffer, 0, SeriesSplitter); // Copies from the correct place in the array.
int n = 0;
foreach (double p in buffer)
{
System.Windows.Forms.DataVisualization.Charting.DataPoint Pointer = new System.Windows.Forms.DataVisualization.Charting.DataPoint();
Pointer.YValues[0] = p;
Pointer.ToolTip = "Testing123";
MySeries.Points.Add(Pointer);
if (n == (PlotHours-1)) { break; }
n++;
}
MySeries.Name = "Stacked_Dollars";
MySeries.YAxisType = System.Windows.Forms.DataVisualization.Charting.AxisType.Secondary;
this.Series.Add(MySeries);设置每个数据池的工具提示的原因是,我将显示所有系列的计算总数和每个数据池中特定系列的值。执行array.copy的原因是,我将这些值整齐地打包在600个元素数组中,并在每个系列中分成几个部分,此外,我还需要从System.Single转换到System.Double。
我相信你会问我为什么要这么做。正在使用第三方软件,它使用的是所谓的quickscript.net。这个第三方软件所缺少的东西之一就是图表。然而,我们能够导入自定义控件。因此,我们必须通过创建所谓的“客户端控件”和“脚本函数库”来解决这些限制。
发布于 2015-04-09 13:56:16
我试过不同的小调整,但似乎都没有用。看起来可行的是做最成功的解决办法,尽管我不太喜欢它。这方面的问题是,当您复制工具提示时,您能够使用的关键字"#VAL“和"\n”不起作用。所以你得把它们翻译成平日。
这是解决问题的办法,但不是解决办法。所以,除非下个月没有其他答案出现,否则我不会接受。
this.GetToolTipText += new System.EventHandler<System.Windows.Forms.DataVisualization.Charting.ToolTipEventArgs>(this.Chart1_GetToolTipText);private void Chart1_GetToolTipText(object sender, System.Windows.Forms.DataVisualization.Charting.ToolTipEventArgs e)
{
// Check selected chart element and set tooltip text
if (e.HitTestResult.ChartElementType == ChartElementType.DataPoint)
{
int i = e.HitTestResult.PointIndex;
DataPoint dp = e.HitTestResult.Series.Points[i];
decimal YValue = System.Convert.ToDecimal(dp.YValues[0]);
YValue = System.Math.Round(YValue, 2);
e.Text = dp.ToolTip.Replace("\\n","\n").Replace("#VAL",YValue.ToString());
}
}https://stackoverflow.com/questions/29260333
复制相似问题