正如标题所说,我正在使用TeeChart在一个图表对象中绘制多个箱线图。由于箱线图的数量可能非常大,我希望能够单击一个框并具有与该系列相关的信息以显示为工具提示。
我目前正在尝试使用 MarksTip 执行此操作,但由于某种原因,当我尝试将鼠标悬停在框上时,MarksTip 有时会打开然后立即关闭(基本上在一瞬间可见)。我已经尝试设置隐藏延迟,但它似乎忽略了这一点。
下面的代码片段:
seriesIndex = 0;
foreach (var seriesData in seriesDataList)
{
var series = new Box()
series.UseCustomValues = true;
series.Box.HorizSize = 5;
series.Box.Style = PointerStyles.Rectangle;
series.MildOut.Visible = true;
series.MildOut.HorizSize = 2;
series.MildOut.VertSize = 2;
series.ExtrOut.Visible = true;
series.ExtrOut.HorizSize = 2;
series.ExtrOut.VertSize = 2;
series.LinePen.Visible = _isLineVisible;
series.Pointer.Pen.Visible = true;
series.ShowInLegend = false;
series.Add(seriesIndex, seriesData);
series.Title = "tooltip text";
var tooltip = new MarksTip(Chart.Chart)
{
Series = series,
Style = MarksStyles.SeriesTitle,
HideDelay = 31000,
};
Chart.Series.Add(series);
seriesIndex++;
}
感谢另一个问题为我指明了正确的方向。
我最终使用 GetSeriesMark
事件来修改单个图表绑定MarksTip
的文本,而不是创建多个系列绑定的"MarksTip
seriesIndex = 0;
Chart.Tools.Add(new MarksTip());
foreach (var seriesData in seriesDataList)
{
var series = new Box()
series.UseCustomValues = true;
//Other series appearance stuff
series.Add(seriesIndex, seriesData);
series.Title = "tooltip text";
series.GetSeriesMark += (s, args) =>
{
args.MarkText = s.Title;
};
series.Marks.Visible = false;
Chart.Series.Add(series);
seriesIndex++;
}
关于此方法的一个注意事项。仅当将鼠标悬停在实际数据点上而不是整个框上时,才会显示工具提示。不理想,但至少我现在可以阅读工具提示。