Я сделал класс диаграммы. Я предоставляю нашему стороннему программному обеспечению возможность добавлять серии с помощью всплывающих подсказок. Но всплывающие подсказки не работают.Как я могу заставить DataPoint.Tooltip работать правильно?
Самое забавное, что всплывающая подсказка работает иногда в стороннем программном обеспечении. Когда я тестирую его в форме окна, он никогда не работает ...
Что я делаю неправильно?
Класс:
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);
Причиной для установки подсказки за точки данных, является то, что я буду отображать вычисленный общее для всех серий и значение для конкретной серии в каждом потоке данных. Причиной для создания массива является то, что я получаю значения, аккуратно упакованные в массив из 600 элементов, разделенный на разделы для каждой серии, кроме того, мне нужно преобразовать из System.Single в System.Double.
Я уверен, что вы спросите, почему я это делаю. Использовали стороннее программное обеспечение, которое использует что-то, называемое quickscript.net. Одной из недостатков этого стороннего программного обеспечения является диаграмма. Тем не менее, мы можем импортировать пользовательские элементы управления. Поэтому нам приходится преодолевать ограничения, создавая то, что они называют «Client controls» и «Script function library».