天生舞男

我喜欢谦虚的学习各种...,希望自己能坚持一辈子,因为即使一张卫生巾也是有它的作用.
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

Using MSChart from a C# WinForm

Posted on 2006-04-13 11:18  天生舞男  阅读(3503)  评论(0编辑  收藏  举报

I have seen in some C# newsgroups that many people are asking for how to use an MSChart control in their WinForms. There are some examples available written in VB but I have yet not found any working examples written in C#. The MSDN help only has examples in VB code as well. So here’s finally an example of how to display your data in a chart without having to do any GDI programming yourself.
The MSChart control is from Microsoft Excel so you need to have Excel installed. First, add a reference to the MSChart control to Visual Studio’s toolbox. Select menu->Tools->Add/Remove Toolbox items, then the COM Components tab and look for Microsoft Chart Control version 6.0 (OLEBD).
Then add create a WinForm project and add an MSChart control to your form from the Toolbox and name it axMSChart. Now you can add the following code to you form’s load method or some other appropriate place.

// Create chart data for three computers. Data is in the form of number of transactions per minute.
// We will only display data gathered between 10:00 AM and 10:03 AM.

axMSChart.ChartData = new Object[5, 4] {{null, "Computer A", "Computer B", "Computer C"},
                                        {"10:00 AM", 123131, 242142, 254353},
                                        {"10:01 AM", 113121, 171345, 205432},
                                        {"10:02 AM", 126323, 281876, 269743},
                                        {"10:03 AM", 199833, 242122, 283445}};

// Add a title and legend on the right side of the chart.

axMSChart.Title.Text = "Performance";
axMSChart.Legend.Location.LocationType = MSChart20Lib.VtChLocationType.VtChLocationTypeRight;
axMSChart.Legend.Location.Visible = true;

// Add titles to the axes.

axMSChart.Plot.get_Axis(MSChart20Lib.VtChAxisId.VtChAxisIdX, null).AxisTitle.Text = "Time";
axMSChart.Plot.get_Axis(MSChart20Lib.VtChAxisId.VtChAxisIdY, null).AxisTitle.Text = "Transactions/minute";

// Set chart type.

axMSChart.chartType = MSChart20Lib.VtChChartType.VtChChartType3dBar;

// Other available chart types are
// VtChChartType2dBar, VtChChartType3dLine, VtChChartType2dLine, VtChChartType3dArea,
// VtChChartType2dArea, VtChChartType3dStep, VtChChartType2dStep,
// VtChChartType3dCombination, VtChChartType2dCombination, VtChChartType2dPie and
// VtChChartType2dXY.

// Set whether all the series in the chart are stacked or not.

axMSChart.Stacking = false;