skills/syncfusion/winforms-ui-components-skills/syncfusion-winforms-grid-control

syncfusion-winforms-grid-control

SKILL.md

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

  • 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

  • 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

  • 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

  • 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

  • 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

  • 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

  • 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

  • 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

  • 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

  • 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

  • Scroll bar configuration
  • Frozen rows and columns
  • Zoom functionality
  • Scroll events
  • Smooth scrolling
  • Performance optimization for scrolling
  • Virtual scrolling

Exporting

๐Ÿ“„ Read: 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

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

gridControl1.Model.RowCount = 1000000;
gridControl1.QueryCellInfo += (sender, e) =>
{
    e.Style.CellValue = GetData(e.RowIndex, e.ColIndex);
};

๐Ÿ“„ Details: references/data-population.md

Pattern 2: Cell Styling

GridStyleInfo style = new GridStyleInfo { BackColor = Color.LightGreen };
gridControl1.ChangeCells(GridRangeInfo.Cells(5, 2, 8, 5), style);

๐Ÿ“„ Details: references/cell-style-architecture.md

Pattern 3: Formulas

gridControl1.Model.EnableFormulas = true;
gridControl1[5, 1].CellValue = "=SUM(A1:A4)";

๐Ÿ“„ Details: references/formula-support.md

Pattern 4: Cell Types

gridControl1[3, 2].CellType = GridCellTypeName.ComboBox;
gridControl1[3, 2].ChoiceList = new string[] { "Option 1", "Option 2" };

๐Ÿ“„ Details: references/cell-types.md

Pattern 5: Selection

gridControl1.AllowSelection = GridSelectionFlags.Any;
gridControl1.SelectionChanged += (s, e) => { /* Handle selection */ };

๐Ÿ“„ Details: 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.

Weekly Installs
1
First Seen
1 day ago
Installed on
mcpjam1
claude-code1
kilo1
replit1
junie1
windsurf1