- name
- syncfusion-winforms-grid-control
- description
- Implements Syncfusion Windows Forms GridControl with cell-oriented architecture, virtual data loading, and Excel-like features. Use this when working with spreadsheet-like grids, GridStyleInfo cell styling, grid formulas, or covered cell ranges. The skill covers QueryCellInfo events, PopulateValues, ChangeCells, grid selection, editing validation, and extensive cell customization capabilities.
- metadata
- {"author":"Syncfusion Inc","version":"34.1.29"}
# Implementing Grid Controls
Complete guide for implementing Syncfusion® Windows Forms GridControl - a powerful cell-oriented grid that provides Excel-like functionality, virtual data loading, and extensive cell-level customization for .NET desktop applications.
## When to Use This Skill
Use this skill when you need to:
- **Implement cell-oriented grids** that contain their own data
- **Create virtual grids** with on-demand data loading for large datasets
- **Customize cells individually** with GridStyleInfo and styling architecture
- **Add Excel-like features** (selection frames, formulas, copy/paste)
- **Populate grid data** using loops, PopulateValues, or QueryCellInfo
- **Implement cell types** (TextBox, ComboBox, CheckBox, Button, etc.)
- **Enable cell editing** with validation and custom handlers
- **Support formulas** with cell references and built-in functions
- **Create covered cells** or merge cells
- **Implement drag and drop** for columns and rows
- **Handle selections** (range-based or row-based)
- **Export grid data** to Excel, PDF, Word, CSV, or HTML
- **Freeze rows/columns** for better navigation
- **Build spreadsheet-like interfaces** in Windows Forms
## GridControl Overview
The **GridControl** is a cell-oriented grid that maintains its own data and doesn't require binding to an external data source. It's designed for maximum flexibility and performance, supporting virtually unlimited rows and columns.
**Key Capabilities:**
- Cell-level customization down to individual cells
- Virtual mode for efficient handling of millions of rows
- 15+ built-in cell types with extensibility
- Excel-like formulas with cell references
- Covered cells and merged cell functionality
- Multiple selection modes (range and row-based)
- Rich editing with validation
- Drag and drop support
- Export to multiple formats
- Frozen rows and columns
- Clipboard operations (copy/paste)
- Touch support
**Best Use Cases:**
- Custom data layouts that don't fit table structures
- Spreadsheet-like applications
- Virtual grids with on-demand data loading
- Applications requiring cell-level control
- Grids that need formula support
- Complex cell types and custom renderers
## Documentation and Navigation Guide
### Getting Started
📄 **Read:** [references/getting-started.md](references/getting-started.md)
- Installation and assembly deployment
- Adding GridControl through designer
- Adding GridControl through code
- Initial configuration and setup
- Required assemblies and namespaces
- Basic grid creation
### Data Population
📄 **Read:** [references/data-population.md](references/data-population.md)
- Setting RowCount and ColCount
- Populating by looping through cells
- Using PopulateValues method
- Virtual grid with QueryCellInfo event
- Data binding patterns
- Performance considerations
### Cell Styling Architecture
📄 **Read:** [references/cell-style-architecture.md](references/cell-style-architecture.md)
- GridStyleInfo object model
- Modifying styles through designer
- Modifying styles through code
- Using ChangeCells method
- GridRangeInfo for range operations
- Appearance customization
- Style inheritance and base styles
### Cell Types
📄 **Read:** [references/cell-types.md](references/cell-types.md)
- Overview of 15+ cell types
- TextBox and static text
- ComboBox and dropdown lists
- CheckBox and radio buttons
- DateTimePicker and calendar
- NumericUpDown and currency
- Button and link cells
- Image cells
- Progress bar cells
- Custom cell types
- Cell type configuration
### Editing and Validation
📄 **Read:** [references/editing-validation.md](references/editing-validation.md)
- ReadOnly property (grid and cell level)
- CurrentCellStartEditing event
- CurrentCellEditingComplete event
- Validation rules and handlers
- Custom edit behavior
- Preventing edits conditionally
- Edit mode configuration
### Selection
📄 **Read:** [references/selection.md](references/selection.md)
- Range selection with AllowSelection
- Row selection with ListBoxSelectionMode
- GridSelectionFlags enumeration
- Single vs multiple selection
- SelectionChanging event
- SelectionChanged event
- Programmatic selection
- Getting selected ranges
### Excel-Like Features
📄 **Read:** [references/excel-like-features.md](references/excel-like-features.md)
- Excel-like selection frame
- 2016 vs 2003 selection styles
- Excel-like current cell highlighting
- Keyboard navigation (arrows, Tab, Enter)
- Copy and paste support
- Clipboard operations
- Excel-like behaviors
- Selection frame customization
### Formula Support
📄 **Read:** [references/formula-support.md](references/formula-support.md)
- Enabling formula engine
- Formula syntax and cell references
- Built-in functions (SUM, AVERAGE, IF, etc.)
- Creating formulas in cells
- Formula calculation and dependencies
- Error handling
- Custom functions
- Formula events
### Covered Ranges
📄 **Read:** [references/covered-ranges.md](references/covered-ranges.md)
- Covering multiple cells
- CoveredRanges collection
- Adding and removing covered ranges
- Covered cells vs merged cells
- Visual appearance of covered cells
- Cell value in covered ranges
- Styling covered cells
### Drag and Drop
📄 **Read:** [references/drag-and-drop.md](references/drag-and-drop.md)
- Enabling column drag and drop
- Row drag and drop support
- Touch support for drag operations
- Drag events and customization
- Restricting drag operations
- Visual feedback during drag
### Scrolling and Zooming
📄 **Read:** [references/scrolling-zooming.md](references/scrolling-zooming.md)
- Scroll bar configuration
- Frozen rows and columns
- Zoom functionality
- Scroll events
- Smooth scrolling
- Performance optimization for scrolling
- Virtual scrolling
### Exporting
📄 **Read:** [references/exporting.md](references/exporting.md)
- Export to Excel (XLS, XLSX)
- Export to PDF
- Export to Word documents
- Export to CSV format
- Export to HTML
- Export options and customization
- Styling exported content
- Range-based export
## Quick Start Example
### Basic GridControl Setup
```csharp
using Syncfusion.Windows.Forms.Grid;
using System.Drawing;
using System.Windows.Forms;
public partial class Form1 : Form
{
private GridControl gridControl1;
public Form1()
{
InitializeComponent();
InitializeGrid();
}
private void InitializeGrid()
{
// Create and configure GridControl
gridControl1 = new GridControl();
gridControl1.Size = new Size(800, 600);
gridControl1.Dock = DockStyle.Fill;
// Set dimensions
gridControl1.RowCount = 50;
gridControl1.ColCount = 10;
// Populate with data
for (int row = 1; row <= gridControl1.RowCount; row++)
{
for (int col = 1; col <= gridControl1.ColCount; col++)
{
gridControl1[row, col].CellValue = $"R{row}C{col}";
}
}
// Style header row
GridStyleInfo headerStyle = new GridStyleInfo();
headerStyle.BackColor = Color.DarkBlue;
headerStyle.TextColor = Color.White;
headerStyle.Font.Bold = true;
gridControl1.ChangeCells(GridRangeInfo.Row(1), headerStyle);
// Enable Excel-like features
gridControl1.ExcelLikeSelectionFrame = true;
gridControl1.ExcelLikeCurrentCell = true;
gridControl1.AllowSelection = GridSelectionFlags.Any;
// Add to form
this.Controls.Add(gridControl1);
}
}
```
## Common Patterns
### Pattern 1: Virtual Grid
```csharp
gridControl1.Model.RowCount = 1000000;
gridControl1.QueryCellInfo += (sender, e) =>
{
e.Style.CellValue = GetData(e.RowIndex, e.ColIndex);
};
```
📄 **Details:** [references/data-population.md](references/data-population.md)
### Pattern 2: Cell Styling
```csharp
GridStyleInfo style = new GridStyleInfo { BackColor = Color.LightGreen };
gridControl1.ChangeCells(GridRangeInfo.Cells(5, 2, 8, 5), style);
```
📄 **Details:** [references/cell-style-architecture.md](references/cell-style-architecture.md)
### Pattern 3: Formulas
```csharp
gridControl1.Model.EnableFormulas = true;
gridControl1[5, 1].CellValue = "=SUM(A1:A4)";
```
📄 **Details:** [references/formula-support.md](references/formula-support.md)
### Pattern 4: Cell Types
```csharp
gridControl1[3, 2].CellType = GridCellTypeName.ComboBox;
gridControl1[3, 2].ChoiceList = new string[] { "Option 1", "Option 2" };
```
📄 **Details:** [references/cell-types.md](references/cell-types.md)
### Pattern 5: Selection
```csharp
gridControl1.AllowSelection = GridSelectionFlags.Any;
gridControl1.SelectionChanged += (s, e) => { /* Handle selection */ };
```
📄 **Details:** [references/selection.md](references/selection.md)
## Key Properties
### Essential Properties
| Property | Type | Description |
|----------|------|-------------|
| `RowCount` | int | Number of rows in the grid |
| `ColCount` | int | Number of columns in the grid |
| `Model[row, col]` | GridStyleInfo | Access cell style and properties |
| `AllowSelection` | GridSelectionFlags | Enable/configure range selection |
| `ListBoxSelectionMode` | SelectionMode | Enable/configure row selection |
| `ReadOnly` | bool | Enable/disable editing for entire grid |
| `ExcelLikeSelectionFrame` | bool | Show Excel-style selection frame |
| `ExcelLikeCurrentCell` | bool | Highlight current cell like Excel |
| `CoveredRanges` | GridRangeInfoList | Collection of covered cell ranges |
### GridStyleInfo Properties
| Property | Type | Description |
|----------|------|-------------|
| `CellValue` | object | Value displayed in the cell |
| `CellType` | string | Cell type (TextBox, ComboBox, etc.) |
| `BackColor` | Color | Background color |
| `TextColor` | Color | Text color |
| `Font` | GridFontInfo | Font settings |
| `ReadOnly` | bool | Enable/disable editing for cell |
| `Format` | string | Display format string |
| `HorizontalAlignment` | GridHorizontalAlignment | Text horizontal alignment |
| `VerticalAlignment` | GridVerticalAlignment | Text vertical alignment |
## Common Use Cases
- **Spreadsheet Application** - Excel-like interface with formulas and formatting
- **Data Entry Form** - Custom forms with various cell types
- **Report Viewer** - Formatted reports with merged cells and export
- **Virtual Data Grid** - Millions of rows with on-demand loading
- **Dashboard Grid** - Custom layouts with visual indicators
- **Configuration Editor** - Property grids with specialized cell types
## Troubleshooting
**Performance Issues:** Use virtual mode (QueryCellInfo), BeginUpdate/EndUpdate for batch operations
**Selection Not Working:** Check AllowSelection property, verify grid has focus
**Formulas Not Calculating:** Ensure Model.EnableFormulas = true, validate syntax
**Cell Values Not Showing:** Verify CellValue set, check for covered cells, validate row/column indices (1-based)
For detailed troubleshooting, see the relevant reference files in the Navigation Guide.
GitHubで見る