میتوانم یک کد با استفاده از روش Data Binding برای رسم نمودار پیشنهاد دهم که با روش شما متفاوت هست :
private void BindDataToChart()
{
// تعریف منبع داده
DataTable dt = new DataTable();
dt.Columns.Add("Date", typeof(DateTime));
dt.Columns.Add("Type", typeof(string));
dt.Columns.Add("Value", typeof(double));
dt.Rows.Add(DateTime.Parse("2022-01-01"), "ورود نقدینگی", 5000);
dt.Rows.Add(DateTime.Parse("2022-01-02"), "ورود نقدینگی", 2000);
dt.Rows.Add(DateTime.Parse("2022-01-03"), "خروج نقدینگی", 1000);
dt.Rows.Add(DateTime.Parse("2022-01-04"), "ورود نقدینگی", 3000);
dt.Rows.Add(DateTime.Parse("2022-01-05"), "خروج نقدینگی", 500);
dt.Rows.Add(DateTime.Parse("2022-01-06"), "خروج نقدینگی", 1000);
// تنظیم منبع داده برای نمودار
chart1.DataSource = dt;
// تعریف ناحیه نمودار
ChartArea chartArea1 = new ChartArea("ChartArea1");
chart1.ChartAreas.Add(chartArea1);
// تعریف سریها برای هر نوع داده
Series seriesIn = new Series("ورود نقدینگی");
Series seriesOut = new Series("خروج نقدینگی");
// تنظیم نقاط داده برای هر سری
seriesIn.Points.DataBindXY(dt.Select("Type = 'ورود نقدینگی'"), "Date", "Value");
seriesOut.Points.DataBindXY(dt.Select("Type = 'خروج نقدینگی'"), "Date", "Value");
// افزودن سریها به نمودار
chart1.Series.Add(seriesIn);
chart1.Series.Add(seriesOut);
// فرمت بندی نمودار
chartArea1.AxisX.LabelStyle.Format = "dd/MM/yyyy";
chartArea1.AxisX.Interval = 1;
chartArea1.AxisY.LabelStyle.Format = "{0:C0}";
}
در این کد، ابتدا یک DataTable به عنوان منبع داده تعریف شده و برای آن چندین سطر داده افزوده شده است. سپس منبع داده برای نمودار تنظیم شده و سه بخش اصلی نمودار (Chart Area و Series) تعریف شده است. در نهایت، دادههای مربوط به هر نوع از دادهها (ورود و خروج نقدینگی) از جدول داده به صورت مستقیم به نمودار منتقل شده و سپس نمودار با استفاده از تنظیمات مختلف به صورت نهایی فرمت بندی میشود . تست بفرمائید اگر مشکلی بود مطرح کنید