C1FlexGrid 中添加 Chart

C1FlexGrid 是一款功能丰富体积轻巧的表格控件。它借鉴了微软 Excel 的操作风格,丰富的数据操作功能、快捷键、选择模式剪切板支持等。并且具有灵活的外观设置和高效的性能。本篇文章阐述如何添加 Chart 到C1FlexGrid-Excel 的另一个强大功能。在本文中,我们将添加 C1Chart 控件,怎样设置 C1Chart 的位置。添加 Chart 到图表中 如 Excel 中,当用户选择数据,添加图表到表单中,Chart 将直观的显示数据的走势。在 C1FlexGrid 中,我们可以通过以下代码实现:

发布于 2013/02/05 00:00

ComponentOne Enterprise

C1FlexGrid 是一款功能丰富体积轻巧的表格控件。它借鉴了微软 Excel 的操作风格,丰富的数据操作功能、快捷键、选择模式剪切板支持等。并且具有灵活的外观设置和高效的性能。

本篇文章阐述如何添加 Chart 到C1FlexGrid-Excel 的另一个强大功能。在本文中,我们将添加 C1Chart 控件,怎样设置 C1Chart 的位置。

添加 Chart 到图表中 如 Excel 中,当用户选择数据,添加图表到表单中,Chart 将直观的显示数据的走势。在 C1FlexGrid 中,我们可以通过以下代码实现:

private void addChartToolStripMenuItem_Click(object sender, EventArgs e)
{
  if (c1FlexGrid1.Clip != "")
  {
     data = c1FlexGrid1.Clip;   // capture the selected data in the grid
     string[] values = data.Split('\r');
     if (ischart == true)         // if the chart already exists in the grid then clear the series collection
     {
       chart.ChartGroups[0].ChartData.SeriesList.Clear();
       C1.Win.C1Chart.ChartDataSeries cds;        // Add new data
       for (int i = 0; i < values.Length; i++)
       {
          if (values[ i ] != "")
          {
             cds = new C1.Win.C1Chart.ChartDataSeries();
             cds = chart.ChartGroups[0].ChartData.SeriesList.AddNewSeries();
             cds.PointData.Length = 1;
             cds.Label = "Series " + values[ i ].ToString();
             cds.Y[0] = Convert.ToInt16(values[ i ]);
          }
        }
   }
   else   // if it doesn't, then add a new chart
   {
     chart = new C1.Win.C1Chart.C1Chart();
     c1FlexGrid1.Controls.Add(chart);
     chart.Location = new Point(200, 100);
     chart.Size = new Size(300,300);
     chart.Legend.Visible = true;
     chart.Header.Visible = true;
     chart.Header.Text = "ADDED CHART CONTROL";
     chart.MouseDown += new MouseEventHandler(chart_MouseDown);
     chart.MouseCaptureChanged += new EventHandler(chart_MouseCaptureChanged);
     chart.ChartGroups[0].ChartType = C1.Win.C1Chart.Chart2DTypeEnum.Pie;
     chart.ChartGroups[0].ChartData.SeriesList.Clear();
     C1.Win.C1Chart.ChartDataSeries cds;
     for (int i = 0; i < values.Length; i++)       // Add Data
     {
        if (values[ i ] != "")
        {
          cds = new C1.Win.C1Chart.ChartDataSeries();
          cds = chart.ChartGroups[0].ChartData.SeriesList.AddNewSeries();
          cds.PointData.Length = 1;
          cds.Label = "Series " + values[ i ].ToString();
          cds.Y[0] = Convert.ToInt16(values[ i ]);
        }
      }
    }
 
   ischart = true;                                // now the chart is there on the grid
  }
}

设置 Chart 的位置:

添加 Chart 后,Chart覆盖于 C1FlexGrid 上,可以通过以下代码设置 Chart 位置。

void chart_MouseDown(object sender, MouseEventArgs e)
{
  chartPoint = e.Location;   // Capture the Chart Control for moving
}
 
void chart_MouseCaptureChanged(object sender, EventArgs e)
{
  Point tmpPoint = c1FlexGrid1.HitTest().Point;
  // drop it in the user specified place in the grid
  chart.Location = new Point(tmpPoint.X - chartPoint.X, tmpPoint.Y - chartPoint.Y);
}
效果图:

下载示例:Download CS Sample

关于葡萄城

葡萄城是专业的软件开发技术和低代码平台提供商,以“赋能开发者”为使命,致力于通过表格控件、低代码和BI等各类软件开发工具和服务,一站式满足开发者需求,帮助企业提升开发效率并创新开发模式。葡萄城开发技术始于1980年,40余年来始终聚焦软件开发技术,有深厚的技术积累和丰富的产品线。是业界能够同时赋能软件开发和低代码开发的企业。凭借过硬的产品能力、活跃的用户社区和丰富的伙伴生态,与超过3000家合作伙伴紧密合作,产品广泛应用于信息和软件服务、制造、交通运输、建筑、金融、能源、教育、公共管理等支柱产业。

相关产品
推荐相关案例
关注微信
葡萄城社区二维码

关注“葡萄城社区”

加微信获取技术资讯

加微信获取技术资讯

想了解更多信息,请联系我们, 随时掌握技术资源和产品动态