SelectedCells Property
Collapse the table of content
Expand the table of content

DataGridView.SelectedCells Property

Gets the collection of cells selected by the user.

Namespace: System.Windows.Forms
Assembly: System.Windows.Forms (in

public DataGridViewSelectedCellCollection SelectedCells { get; }
/** @property */
public DataGridViewSelectedCellCollection get_SelectedCells ()

public function get SelectedCells () : DataGridViewSelectedCellCollection

Not applicable.

Property Value

A DataGridViewSelectedCellCollection that represents the cells selected by the user.

The SelectedCells property is always populated regardless of the SelectionMode property value.

This property contains a read-only snapshot of the selection at the time it is referenced. If you hold onto a copy of this collection, it may differ from the actual, subsequent DataGridView state in which the user may have changed the selection. Therefore, you should not operate on a copy of the collection.

The following code example demonstrates how to use the SelectedCells collection to find the sum of the values in the selection. In the example, this collection is iterated through and the valid values are added to the sum, which is displayed in a label. This example is part of a larger example available in the SelectionChanged event.

private void UpdateLabelText()
    int WithdrawalTotal = 0;
    int DepositTotal = 0;
    int SelectedCellTotal = 0;
    int counter;

    // Iterate through all the rows and sum up the appropriate columns.
    for (counter = 0; counter < (DataGridView1.Rows.Count);
        if (DataGridView1.Rows[counter].Cells["Withdrawals"].Value
            != null)
            if (DataGridView1.Rows[counter].
                Cells["Withdrawals"].Value.ToString().Length != 0)
                WithdrawalTotal += int.Parse(DataGridView1.Rows[counter].

        if (DataGridView1.Rows[counter].Cells["Deposits"].Value != null)
            if (DataGridView1.Rows[counter]
                .Cells["Deposits"].Value.ToString().Length != 0)
                DepositTotal += int.Parse(DataGridView1.Rows[counter]

    // Iterate through the SelectedCells collection and sum up the values.
    for (counter = 0;
        counter < (DataGridView1.SelectedCells.Count); counter++)
        if (DataGridView1.SelectedCells[counter].FormattedValueType ==
            string value = null;

            // If the cell contains a value that has not been commited,
            // use the modified value.
            if (DataGridView1.IsCurrentCellDirty == true)

                value = DataGridView1.SelectedCells[counter]
                value = DataGridView1.SelectedCells[counter]
            if (value != null)
                // Ignore cells in the Description column.
                if (DataGridView1.SelectedCells[counter].ColumnIndex !=
                    if (value.Length != 0)
                        SelectedCellTotal += int.Parse(value);

    // Set the labels to reflect the current state of the DataGridView.
    Label1.Text = "Withdrawals Total: " + WithdrawalTotal.ToString();
    Label2.Text = "Deposits Total: " + DepositTotal.ToString();
    Label3.Text = "Selected Cells Total: " + SelectedCellTotal.ToString();
    Label4.Text = "Total entries: " + DataGridView1.RowCount.ToString();

Windows 98, Windows Server 2000 SP4, Windows Millennium Edition, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition

The Microsoft .NET Framework 3.0 is supported on Windows Vista, Microsoft Windows XP SP2, and Windows Server 2003 SP1.

.NET Framework

Supported in: 3.0, 2.0

Community Additions

© 2015 Microsoft