Introduction
The standard System.Windows.Forms.DataGridView
cells do not support merging the normal way. At some forums, developers advise the use of the CellPainting
event of DataGridView
. But this solution is not good if you need to realize complicated mergings. DataGridViewTextBoxCellEx
supports spanning without any additional code.
Using the Code
To use DataGridViewTextBoxCellEx
in a project, include the DataGridViewTextBoxCellEx.cs file, and then you can add DataGridViewTextBoxColumnEx
in the columns editor of the DataGridView
control.
Merging of cells is performed by setting the ColumnSpan
and RowSpan
properties of the left top DataGridViewTextBoxCellEx
cell of the target region. For successful merging, all cells of the region must be of the DataGridViewTextBoxCellEx
type.
var cell = (DataGridViewTextBoxCellEx)dataGridView1[0, 0];
cell.ColumnSpan = 3;
cell.RowSpan = 2;
As a result, the dataGridView1[0, 0]
cell will occupy the region from (0, 0) to (2, 1) (see screenshot at the top). The merged cell will look as the top left cell of the region. And if you wish to address a merged cell, you need to address the top left cell of the merged region. The merged region will look and behave as a normal System.Windows.Forms.DataGridViewTextBoxCell
. You can edit it the standard way (pressing F2, clicking or typing text).
DataGridViewTextBoxCellEx
also has a property OwnerCell
. For unmerged cells and for the left top cells of the merged regions, it is null
. For other cells of the merged region, the property points to the left top cell.
History
- 11th March, 2009: Initial post
- 9th March, 2010: Article updated
- 21st December, 2010: Demo and source files updated