我正在尝试使用c# windows窗体项目将多个类似类型的标志(箭头)添加到活动图表中。这是为了在值超出预定义规范时提供一个标签。我目前困在如何创建ArrowAnnotation类的新实例,所以如果多个事件发生,将有多个标志的人检查图表。我能够创建一个实例并将其位置操作到该系列中最新的数据点(将其锁定到历史点不应该是一件难事,我只是还没有这样做。)
我对创建其他类的多个实例并使用列表/字典跟踪它们有一个理解,但这一个让我难住了(或者也许我没有像我想象的那样有很好的理解?)
我不能直接分享我的代码,但我想如果需要的话,我可以写一些示例代码。
编辑-
我正在考虑使用成员克隆来复制每个箭头的共同属性,并将这些对象添加到字典中。
感谢好的,我已经设法弄清楚如何为我的用例做到这一点。
当更新动态图表时,如果参数不符合规范,我可以调用方法。在该方法中,我创建了注释的新实例,以及我想用作模板的属性。(如果您想要轻微的变化,也可以使用条件逻辑更改这些值,并且可以与参数一起传递),而不是将新制作的注释添加到注释组中。我仍在寻找改进的代码。我仍然想要一种方法来为箭头分配一个名称,然后回忆那个名称并修改它(如果我愿意的话)。并更改通过/失败标准,而不是为新的故障点应用注释(但这将进入新的领域)
// This is not the full method just the part that counts for this question.
private ArrowAnnotation floatArrow;
private void UpdateChart()
{
GenerateArrows(dateTime, sensorValue);
this.chart1.Annotations.Add(floatArrow);enter code here
}
private void GenerateArrows(DateTime x, double y)
{
floatArrow = new ArrowAnnotation();
floatArrow.Name = Convert.ToString(x);
floatArrow.ToolTip = Convert.ToString(x);
floatArrow.AxisXName = "ChartArea1\rX";
floatArrow.AxisYName = "ChartArea1\rY";
floatArrow.X = x.ToOADate();
floatArrow.Y = y;
floatArrow.Height = 5;
floatArrow.Width = 0;
floatArrow.BackColor = Color.Red;
}