c# - 在 C# 中使用 DataPointCollection.DataBindY 绘制股票图表
问题描述
如何一次用 List<> 和 DataPointCollection.DataBindY 绘制股票图表?
我知道如何在图表上添加股票数据,但我不想通过 Add 循环和重复绘图,因为实际列表要长得多。
为了立即绘制图表,我尝试了 DataPointCollection.DataBindY 但它不起作用。它需要 IEnumerable[] 但我不知道如何将 List<> 更改为 IEnumerable[]。
public partial class Form1 : Form
{
double[] Candle;
List<double[]> CandleList = new List<double[]>();
public Form1()
{
InitializeComponent();
Candle = new double[] { 5, 0, 3, 1 };
CandleList.Add(Candle);
Candle = new double[] { 10, 5, 7, 9 };
CandleList.Add(Candle);
}
private void button1_Click(object sender, EventArgs e)
{
for (int i = 0; i < CandleList.Count; i++)
{
chart1.Series[0].Points.Add(CandleList[i]); // works well
}
}
private void button2_Click(object sender, EventArgs e)
{
chart1.Series[0].Points.DataBindY(CandleList); // System.ArgumentException
}
}
解决方案
因为列表是 iEnumerable,所以 iEnumerable[] 表示列表数组。
private void button1_Click(object sender, EventArgs e)
{
List<double>[] Lists = new List<double>[4];
for (int i = 0; i < 4; i++)
{
Lists[i] = new List<double>();
}
Lists[0].Add(5); // high
Lists[0].Add(10);
Lists[1].Add(0); // low
Lists[1].Add(5);
Lists[2].Add(3); // close
Lists[2].Add(8);
Lists[3].Add(2); // open
Lists[3].Add(7);
chart1.Series[0].Points.DataBindY(Lists);
}
推荐阅读
- bash - Bash - 使用 group by 的时间字段总和
- python - Python - 类方法中的默认值和
self
- django - Django(如果用户已注销并且 user.is_authenticated = FALSE,如何防止用户直接访问 main_app/urls.py 中的 URL
- docker - 构建过程中的命令和shell中的命令之间的区别
- python - 在 Python 的 for 循环中使用多个变量
- java - 当我运行 spring 批处理作业时,chunkListener 不运行
- javascript - 反应如何调用一个道具
- github - 是否必须先在 github 上 fork 一个项目才能提出拉取请求?
- c# - Web服务上的调用按钮丢失
- c++ - C ++中“::delete”的目的是什么?