Implementing Syncfusion Windows Forms Charts
Essential Chart for Windows Forms is a comprehensive charting control supporting 35+ chart types for business applications. It features extensive customization, data binding, interactive capabilities, and export functionality for creating presentation-quality charts.
When to Use This Skill
Use this skill when you need to:
- Create any type of chart in Windows Forms applications
- Visualize data with line, area, bar, column, pie, or financial charts
- Implement interactive charts with zoom, pan, or tooltips
- Bind chart data from DataSet, DataTable, or custom data sources
- Configure chart axes, legends, titles, or appearance
- Export charts to PDF, Excel, Word, or images
- Add statistical analysis or formulas to charts
- Customize chart styling, colors
Component Overview
ChartControl is the main component providing:
- 35+ chart types: Area, Bar, Bubble, Candle, Column, Combination, Funnel, Gantt, Histogram, Line, Pie, Pyramid, and more
- Flexible data binding: DataSet, DataTable, DataView, custom models via interfaces
- Multiple series support: Overlay multiple data series with different types
- Advanced axes: Primary/secondary axes, DateTime support, logarithmic scales, custom intervals
- Rich customization: Skins, palettes, fonts, gradients, shadows
- Interactive features: Zooming, panning, tooltips, hit testing, runtime modification
- Export capabilities: PDF, Excel, Word, images, printing with preview
- Statistical support: Built-in formulas for analysis
Documentation and Navigation Guide
Getting Started
📄 Read: references/getting-started.md
- Assembly deployment and NuGet packages
- Adding ChartControl to Windows Forms
- Basic data population with BindingList
- Design-time ChartWizard configuration
- First chart example
Chart Types
📄 Read: references/chart-types.md
- Overview of 35+ available chart types
- Chart type categories and use cases
- Y-value requirements per type
- Setting chart type via Type property
- Type-specific configuration
Data Population
📄 Read: references/data-population.md
- Binding DataSet, DataTable, DataView
- ChartDataBindModel and CategoryAxisDataBindModel
- Custom data models via IChartSeriesModel
- Performance optimization for large datasets
Chart Series
📄 Read: references/chart-series.md
- Creating and adding ChartSeries
- ChartPoint class for data points
- Managing X and Y values
- Series styling and customization
- Multiple series configuration
Axes Configuration
📄 Read: references/axes-configuration.md
- Primary and secondary axes (PrimaryXAxis, PrimaryYAxis)
- Axis value types (Double, DateTime, Category, Logarithmic)
- Range and interval settings
- Custom label formatting and positioning
- Multiple axes support
Chart Area
📄 Read: references/chart-area.md
- Chart area properties and layout
- Background, borders, margins
- Interior customization
- Shadow effects
Appearance and Styling
📄 Read: references/appearance-styling.md
- Built-in skins (Metro, Office, etc.)
- Color palettes and CustomPalette
- Gradient and solid color styles
- Font and text formatting
- BrushInfo for advanced styling
Legend Configuration
📄 Read: references/legend-configuration.md
- Enabling and positioning legends
- LegendPosition and LegendAlignment
- Inside vs outside placement
- Custom legend items
- Multiple legends
Chart Title
📄 Read: references/chart-title.md
- Adding ChartTitle objects
- Title text and positioning
- Font and appearance customization
- Multiple titles support
Data Labels and Tooltips
📄 Read: references/data-labels-tooltips.md
- Enabling data labels (DisplayText)
- Label formatting and orientation
- Tooltip configuration (ShowToolTips)
- Custom tooltip content via PrepareStyle event
- Appearance customization
Runtime Features
📄 Read: references/runtime-features.md
- Zooming and panning capabilities
- Hit testing for chart regions
- Interactive manipulation
- Dynamic data updates
- Runtime series modification
Chart Events
📄 Read: references/chart-events.md
- ChartControl and series events
- PrepareStyle event for customization
- Mouse and interaction events
- Chart region click events
- Event handling patterns
Exporting and Printing
📄 Read: references/exporting-printing.md
- Export to PDF, Excel, Word
- Image export (PNG, BMP, JPEG)
- Printing and print preview
- Multi-page printing configuration
Statistical Formulas
📄 Read: references/statistical-formulas.md
- Built-in statistical functions
- Mean, standard deviation, variance
- Distributions, T-test, F-test, Z-test
- Applying formulas to series data
Performance Optimization
📄 Read: references/performance-optimization.md
- Large dataset handling strategies
- Data binding performance
- Rendering optimization
- Memory management best practices
Localization
📄 Read: references/localization.md
- Localizing chart text and labels
- Culture-specific formatting
- Resource file configuration
- Date and number formatting
Troubleshooting
📄 Read: references/troubleshooting.md
- Common issues and solutions
- Data display problems
- Performance issues
- Design-time configuration problems
Quick Start Example
using Syncfusion.Windows.Forms.Chart;
using System.ComponentModel;
// Create a simple data model
public class SalesData
{
public string Year { get; set; }
public double Sales { get; set; }
public SalesData(string year, double sales)
{
this.Year = year;
this.Sales = sales;
}
}
// Populate data
BindingList<SalesData> dataSource = new BindingList<SalesData>();
dataSource.Add(new SalesData("2020", 30));
dataSource.Add(new SalesData("2021", 45));
dataSource.Add(new SalesData("2022", 60));
dataSource.Add(new SalesData("2023", 75));
// Create data model for binding
CategoryAxisDataBindModel dataModel = new CategoryAxisDataBindModel(dataSource);
dataModel.CategoryName = "Year";
dataModel.YNames = new string[] { "Sales" };
// Create and configure series
ChartSeries series = new ChartSeries("Sales");
series.Type = ChartSeriesType.Column;
series.CategoryModel = dataModel;
series.Style.DisplayText = true;
// Configure chart
chartControl1.PrimaryXAxis.ValueType = ChartValueType.Category;
chartControl1.Series.Add(series);
chartControl1.Skins = Skins.Metro;
// Add title
ChartTitle title = new ChartTitle();
title.Text = "Sales Performance";
chartControl1.Titles.Add(title);
// Configure legend
chartControl1.Legend.Visible = true;
chartControl1.LegendAlignment = ChartAlignment.Center;
chartControl1.Legend.Position = ChartDock.Bottom;
Common Patterns
Pattern 1: Multiple Series with Different Types
// Sales as columns
ChartSeries salesSeries = new ChartSeries("Sales");
salesSeries.Type = ChartSeriesType.Column;
salesSeries.Points.Add(1, 100);
salesSeries.Points.Add(2, 150);
salesSeries.Points.Add(3, 120);
// Target as line
ChartSeries targetSeries = new ChartSeries("Target");
targetSeries.Type = ChartSeriesType.Line;
targetSeries.Points.Add(1, 110);
targetSeries.Points.Add(2, 130);
targetSeries.Points.Add(3, 140);
chartControl1.Series.Add(salesSeries);
chartControl1.Series.Add(targetSeries);
Pattern 2: DateTime Axis with Date Data
ChartSeries series = new ChartSeries("Temperature");
series.Type = ChartSeriesType.Line;
// Add points with DateTime X values
series.Points.Add(new DateTime(2024, 1, 1), 18.5);
series.Points.Add(new DateTime(2024, 1, 2), 19.2);
series.Points.Add(new DateTime(2024, 1, 3), 17.8);
// Configure X axis for DateTime
chartControl1.PrimaryXAxis.ValueType = ChartValueType.DateTime;
chartControl1.PrimaryXAxis.DateTimeFormat = "dd/MM/yyyy";
chartControl1.Series.Add(series);
Pattern 3: Custom Tooltips
chartControl1.ShowToolTips = true;
chartSeries.PrepareStyle += (sender, args) =>
{
ChartSeries series = sender as ChartSeries;
ChartPoint point = series.Points[args.Index];
args.Style.ToolTip = $"Value: {point.YValues[0]:N2}";
};
Pattern 4: Export Chart to PDF
// Export to PDF
chartControl1.SaveImage("chart.pdf");
// Export to image
chartControl1.SaveImage("chart.png");
Key Properties
ChartControl:
Series - Collection of ChartSeries to display
PrimaryXAxis, PrimaryYAxis - Main axes configuration
Legend - Legend visibility and appearance
Titles - Collection of chart titles
ShowToolTips - Enable interactive tooltips
ChartSeries:
Type - Chart type (Column, Line, Pie, etc.)
Points - Collection of data points
CategoryModel - Data binding model
Style - Visual appearance settings
Text - Series display name
ChartAxis:
ValueType - Data type (Double, DateTime, Category, etc.)
Range - Min/max values
Interval - Spacing between labels
Title - Axis title text
Common Use Cases
- Sales Dashboard: Column/line charts with multiple series for sales trends
- Financial Analysis: Candle/OHLC charts for stock data visualization
- Statistical Reports: Histogram, box plot for data distribution analysis
- Performance Monitoring: Line charts with DateTime axis for time-series data
- Comparison Charts: Bar charts for category comparison
- Data Distribution: Pie/doughnut charts for percentage breakdown
- Scientific Data: Scatter/bubble charts for correlation analysis
- Project Management: Gantt charts for timeline visualization
Related Skills
1---2name: syncfusion-winforms-chart3description: Guide for implementing Syncfusion Windows Forms Chart control with 35+ chart types, data binding, series configuration, axes customization, and interactive features. Use this when working with Windows Forms charts, ChartControl, chart types, or data visualization in WinForms. This skill covers chart series, chart axes, data binding, legends, styling, and all chart types including Area, Bar, Line, Pie, Column, Bubble, Candle, financial charts, and statistical charts for Windows Forms applications (.NET Framework).4---56# Implementing Syncfusion Windows Forms Charts78Essential Chart for Windows Forms is a comprehensive charting control supporting 35+ chart types for business applications. It features extensive customization, data binding, interactive capabilities, and export functionality for creating presentation-quality charts.910## When to Use This Skill1112Use this skill when you need to:13- Create any type of chart in Windows Forms applications14- Visualize data with line, area, bar, column, pie, or financial charts15- Implement interactive charts with zoom, pan, or tooltips16- Bind chart data from DataSet, DataTable, or custom data sources17- Configure chart axes, legends, titles, or appearance18- Export charts to PDF, Excel, Word, or images19- Add statistical analysis or formulas to charts20- Customize chart styling, colors2122## Component Overview2324**ChartControl** is the main component providing:25- **35+ chart types:** Area, Bar, Bubble, Candle, Column, Combination, Funnel, Gantt, Histogram, Line, Pie, Pyramid, and more26- **Flexible data binding:** DataSet, DataTable, DataView, custom models via interfaces27- **Multiple series support:** Overlay multiple data series with different types28- **Advanced axes:** Primary/secondary axes, DateTime support, logarithmic scales, custom intervals29- **Rich customization:** Skins, palettes, fonts, gradients, shadows30- **Interactive features:** Zooming, panning, tooltips, hit testing, runtime modification31- **Export capabilities:** PDF, Excel, Word, images, printing with preview32- **Statistical support:** Built-in formulas for analysis3334## Documentation and Navigation Guide3536### Getting Started37📄 **Read:** [references/getting-started.md](references/getting-started.md)38- Assembly deployment and NuGet packages39- Adding ChartControl to Windows Forms40- Basic data population with BindingList41- Design-time ChartWizard configuration42- First chart example4344### Chart Types45📄 **Read:** [references/chart-types.md](references/chart-types.md)46- Overview of 35+ available chart types47- Chart type categories and use cases48- Y-value requirements per type49- Setting chart type via Type property50- Type-specific configuration5152### Data Population53📄 **Read:** [references/data-population.md](references/data-population.md)54- Binding DataSet, DataTable, DataView55- ChartDataBindModel and CategoryAxisDataBindModel56- Custom data models via IChartSeriesModel57- Performance optimization for large datasets5859### Chart Series60📄 **Read:** [references/chart-series.md](references/chart-series.md)61- Creating and adding ChartSeries62- ChartPoint class for data points63- Managing X and Y values64- Series styling and customization65- Multiple series configuration6667### Axes Configuration68📄 **Read:** [references/axes-configuration.md](references/axes-configuration.md)69- Primary and secondary axes (PrimaryXAxis, PrimaryYAxis)70- Axis value types (Double, DateTime, Category, Logarithmic)71- Range and interval settings72- Custom label formatting and positioning73- Multiple axes support7475### Chart Area76📄 **Read:** [references/chart-area.md](references/chart-area.md)77- Chart area properties and layout78- Background, borders, margins79- Interior customization80- Shadow effects8182### Appearance and Styling83📄 **Read:** [references/appearance-styling.md](references/appearance-styling.md)84- Built-in skins (Metro, Office, etc.)85- Color palettes and CustomPalette86- Gradient and solid color styles87- Font and text formatting88- BrushInfo for advanced styling8990### Legend Configuration91📄 **Read:** [references/legend-configuration.md](references/legend-configuration.md)92- Enabling and positioning legends93- LegendPosition and LegendAlignment94- Inside vs outside placement95- Custom legend items96- Multiple legends9798### Chart Title99📄 **Read:** [references/chart-title.md](references/chart-title.md)100- Adding ChartTitle objects101- Title text and positioning102- Font and appearance customization103- Multiple titles support104105### Data Labels and Tooltips106📄 **Read:** [references/data-labels-tooltips.md](references/data-labels-tooltips.md)107- Enabling data labels (DisplayText)108- Label formatting and orientation109- Tooltip configuration (ShowToolTips)110- Custom tooltip content via PrepareStyle event111- Appearance customization112113### Runtime Features114📄 **Read:** [references/runtime-features.md](references/runtime-features.md)115- Zooming and panning capabilities116- Hit testing for chart regions117- Interactive manipulation118- Dynamic data updates119- Runtime series modification120121### Chart Events122📄 **Read:** [references/chart-events.md](references/chart-events.md)123- ChartControl and series events124- PrepareStyle event for customization125- Mouse and interaction events126- Chart region click events127- Event handling patterns128129### Exporting and Printing130📄 **Read:** [references/exporting-printing.md](references/exporting-printing.md)131- Export to PDF, Excel, Word132- Image export (PNG, BMP, JPEG)133- Printing and print preview134- Multi-page printing configuration135136### Statistical Formulas137📄 **Read:** [references/statistical-formulas.md](references/statistical-formulas.md)138- Built-in statistical functions139- Mean, standard deviation, variance140- Distributions, T-test, F-test, Z-test141- Applying formulas to series data142143### Performance Optimization144📄 **Read:** [references/performance-optimization.md](references/performance-optimization.md)145- Large dataset handling strategies146- Data binding performance147- Rendering optimization148- Memory management best practices149150### Localization151📄 **Read:** [references/localization.md](references/localization.md)152- Localizing chart text and labels153- Culture-specific formatting154- Resource file configuration155- Date and number formatting156157### Troubleshooting158📄 **Read:** [references/troubleshooting.md](references/troubleshooting.md)159- Common issues and solutions160- Data display problems161- Performance issues162- Design-time configuration problems163164## Quick Start Example165166```csharp167using Syncfusion.Windows.Forms.Chart;168using System.ComponentModel;169170// Create a simple data model171public class SalesData172{173 public string Year { get; set; }174 public double Sales { get; set; }175 176 public SalesData(string year, double sales)177 {178 this.Year = year;179 this.Sales = sales;180 }181}182183// Populate data184BindingList<SalesData> dataSource = new BindingList<SalesData>();185dataSource.Add(new SalesData("2020", 30));186dataSource.Add(new SalesData("2021", 45));187dataSource.Add(new SalesData("2022", 60));188dataSource.Add(new SalesData("2023", 75));189190// Create data model for binding191CategoryAxisDataBindModel dataModel = new CategoryAxisDataBindModel(dataSource);192dataModel.CategoryName = "Year";193dataModel.YNames = new string[] { "Sales" };194195// Create and configure series196ChartSeries series = new ChartSeries("Sales");197series.Type = ChartSeriesType.Column;198series.CategoryModel = dataModel;199series.Style.DisplayText = true;200201// Configure chart202chartControl1.PrimaryXAxis.ValueType = ChartValueType.Category;203chartControl1.Series.Add(series);204chartControl1.Skins = Skins.Metro;205206// Add title207ChartTitle title = new ChartTitle();208title.Text = "Sales Performance";209chartControl1.Titles.Add(title);210211// Configure legend212chartControl1.Legend.Visible = true;213chartControl1.LegendAlignment = ChartAlignment.Center;214chartControl1.Legend.Position = ChartDock.Bottom;215```216217## Common Patterns218219### Pattern 1: Multiple Series with Different Types220```csharp221// Sales as columns222ChartSeries salesSeries = new ChartSeries("Sales");223salesSeries.Type = ChartSeriesType.Column;224salesSeries.Points.Add(1, 100);225salesSeries.Points.Add(2, 150);226salesSeries.Points.Add(3, 120);227228// Target as line229ChartSeries targetSeries = new ChartSeries("Target");230targetSeries.Type = ChartSeriesType.Line;231targetSeries.Points.Add(1, 110);232targetSeries.Points.Add(2, 130);233targetSeries.Points.Add(3, 140);234235chartControl1.Series.Add(salesSeries);236chartControl1.Series.Add(targetSeries);237```238239### Pattern 2: DateTime Axis with Date Data240```csharp241ChartSeries series = new ChartSeries("Temperature");242series.Type = ChartSeriesType.Line;243244// Add points with DateTime X values245series.Points.Add(new DateTime(2024, 1, 1), 18.5);246series.Points.Add(new DateTime(2024, 1, 2), 19.2);247series.Points.Add(new DateTime(2024, 1, 3), 17.8);248249// Configure X axis for DateTime250chartControl1.PrimaryXAxis.ValueType = ChartValueType.DateTime;251chartControl1.PrimaryXAxis.DateTimeFormat = "dd/MM/yyyy";252chartControl1.Series.Add(series);253```254255### Pattern 3: Custom Tooltips256```csharp257chartControl1.ShowToolTips = true;258chartSeries.PrepareStyle += (sender, args) =>259{260 ChartSeries series = sender as ChartSeries;261 ChartPoint point = series.Points[args.Index];262 args.Style.ToolTip = $"Value: {point.YValues[0]:N2}";263};264```265266### Pattern 4: Export Chart to PDF267```csharp268// Export to PDF269chartControl1.SaveImage("chart.pdf");270271// Export to image272chartControl1.SaveImage("chart.png");273```274275## Key Properties276277**ChartControl:**278- `Series` - Collection of ChartSeries to display279- `PrimaryXAxis`, `PrimaryYAxis` - Main axes configuration280- `Legend` - Legend visibility and appearance281- `Titles` - Collection of chart titles282- `ShowToolTips` - Enable interactive tooltips283284**ChartSeries:**285- `Type` - Chart type (Column, Line, Pie, etc.)286- `Points` - Collection of data points287- `CategoryModel` - Data binding model288- `Style` - Visual appearance settings289- `Text` - Series display name290291**ChartAxis:**292- `ValueType` - Data type (Double, DateTime, Category, etc.)293- `Range` - Min/max values294- `Interval` - Spacing between labels295- `Title` - Axis title text296297## Common Use Cases2982991. **Sales Dashboard:** Column/line charts with multiple series for sales trends3002. **Financial Analysis:** Candle/OHLC charts for stock data visualization3013. **Statistical Reports:** Histogram, box plot for data distribution analysis3024. **Performance Monitoring:** Line charts with DateTime axis for time-series data3035. **Comparison Charts:** Bar charts for category comparison3046. **Data Distribution:** Pie/doughnut charts for percentage breakdown3057. **Scientific Data:** Scatter/bubble charts for correlation analysis3068. **Project Management:** Gantt charts for timeline visualization307308## Related Skills309310- [Implementing Syncfusion Windows Forms Components](../../) - Main library overview311- For other platforms, see parent documentations folder