Condividi tramite


Procedura: ottenere le celle, righe e colonne selezionate nel controllo DataGridView di Windows Form

È possibile ottenere le celle, righe o colonne selezionate da un controllo DataGridView mediante l'utilizzo delle proprietà corrispondenti: SelectedCells, SelectedRows e SelectedColumns. Nelle procedure seguenti viene descritto come ottenere le celle selezionate e visualizzarne gli indici di riga e colonna in una classe MessageBox.

Per ottenere le celle selezionate in un controllo DataGridView

  • Utilizzare la proprietà SelectedCells.

    Nota

    Utilizzare il metodo AreAllCellsSelected per evitare di visualizzare una grande quantità di celle.

    Private Sub selectedCellsButton_Click( _
        ByVal sender As Object, ByVal e As System.EventArgs) _
        Handles selectedCellsButton.Click
    
        Dim selectedCellCount As Integer = _
            dataGridView1.GetCellCount(DataGridViewElementStates.Selected)
    
        If selectedCellCount > 0 Then
    
            If dataGridView1.AreAllCellsSelected(True) Then
    
                MessageBox.Show("All cells are selected", "Selected Cells")
    
            Else
    
                Dim sb As New System.Text.StringBuilder()
    
                Dim i As Integer
                For i = 0 To selectedCellCount - 1
    
                    sb.Append("Row: ")
                    sb.Append(dataGridView1.SelectedCells(i).RowIndex _
                        .ToString())
                    sb.Append(", Column: ")
                    sb.Append(dataGridView1.SelectedCells(i).ColumnIndex _
                        .ToString())
                    sb.Append(Environment.NewLine)
    
                Next i
    
                sb.Append("Total: " + selectedCellCount.ToString())
                MessageBox.Show(sb.ToString(), "Selected Cells")
    
            End If
    
        End If
    
    End Sub
    
    private void selectedCellsButton_Click(object sender, System.EventArgs e)
    {
        Int32 selectedCellCount =
            dataGridView1.GetCellCount(DataGridViewElementStates.Selected);
        if (selectedCellCount > 0)
        {
            if (dataGridView1.AreAllCellsSelected(true))
            {
                MessageBox.Show("All cells are selected", "Selected Cells");
            }
            else
            {
                System.Text.StringBuilder sb =
                    new System.Text.StringBuilder();
    
                for (int i = 0;
                    i < selectedCellCount; i++)
                {
                    sb.Append("Row: ");
                    sb.Append(dataGridView1.SelectedCells[i].RowIndex
                        .ToString());
                    sb.Append(", Column: ");
                    sb.Append(dataGridView1.SelectedCells[i].ColumnIndex
                        .ToString());
                    sb.Append(Environment.NewLine);
                }
    
                sb.Append("Total: " + selectedCellCount.ToString());
                MessageBox.Show(sb.ToString(), "Selected Cells");
            }
        }
    }
    

Per ottenere le righe selezionate in un controllo DataGridView

  • Utilizzare la proprietà SelectedRows. Per consentire agli utenti di selezionare le righe, è necessario impostare la proprietà SelectionMode su FullRowSelect o RowHeaderSelect.

    Private Sub selectedRowsButton_Click( _
        ByVal sender As Object, ByVal e As System.EventArgs) _
        Handles selectedRowsButton.Click
    
        Dim selectedRowCount As Integer = _
            dataGridView1.Rows.GetRowCount(DataGridViewElementStates.Selected)
    
        If selectedRowCount > 0 Then
    
            Dim sb As New System.Text.StringBuilder()
    
            Dim i As Integer
            For i = 0 To selectedRowCount - 1
    
                sb.Append("Row: ")
                sb.Append(dataGridView1.SelectedRows(i).Index.ToString())
                sb.Append(Environment.NewLine)
    
            Next i
    
            sb.Append("Total: " + selectedRowCount.ToString())
            MessageBox.Show(sb.ToString(), "Selected Rows")
    
        End If
    
    End Sub
    
    private void selectedRowsButton_Click(object sender, System.EventArgs e)
    {
        Int32 selectedRowCount =
            dataGridView1.Rows.GetRowCount(DataGridViewElementStates.Selected);
        if (selectedRowCount > 0)
        {
            System.Text.StringBuilder sb = new System.Text.StringBuilder();
    
            for (int i = 0; i < selectedRowCount; i++)
            {
                sb.Append("Row: ");
                sb.Append(dataGridView1.SelectedRows[i].Index.ToString());
                sb.Append(Environment.NewLine);
            }
    
            sb.Append("Total: " + selectedRowCount.ToString());
            MessageBox.Show(sb.ToString(), "Selected Rows");
        }
    }
    

Per ottenere le colonne selezionate in un controllo DataGridView

  • Utilizzare la proprietà SelectedColumns. Per consentire agli utenti di selezionare le colonne, è necessario impostare la proprietà SelectionMode su FullColumnSelect o ColumnHeaderSelect.

    Private Sub selectedColumnsButton_Click( _
        ByVal sender As Object, ByVal e As System.EventArgs) _
        Handles selectedColumnsButton.Click
    
        Dim selectedColumnCount As Integer = dataGridView1.Columns _
            .GetColumnCount(DataGridViewElementStates.Selected)
    
        If selectedColumnCount > 0 Then
    
            Dim sb As New System.Text.StringBuilder()
    
            Dim i As Integer
            For i = 0 To selectedColumnCount - 1
    
                sb.Append("Column: ")
                sb.Append(dataGridView1.SelectedColumns(i).Index.ToString())
                sb.Append(Environment.NewLine)
    
            Next i
    
            sb.Append("Total: " + selectedColumnCount.ToString())
            MessageBox.Show(sb.ToString(), "Selected Columns")
    
        End If
    
    End Sub
    
    private void selectedColumnsButton_Click(object sender, System.EventArgs e)
    {
        Int32 selectedColumnCount = dataGridView1.Columns
            .GetColumnCount(DataGridViewElementStates.Selected);
        if (selectedColumnCount > 0)
        {
            System.Text.StringBuilder sb = new System.Text.StringBuilder();
    
            for (int i = 0; i < selectedColumnCount; i++)
            {
                sb.Append("Column: ");
                sb.Append(dataGridView1.SelectedColumns[i].Index
                    .ToString());
                sb.Append(Environment.NewLine);
            }
    
            sb.Append("Total: " + selectedColumnCount.ToString());
            MessageBox.Show(sb.ToString(), "Selected Columns");
        }
    }
    

Compilazione del codice

L'esempio presenta i seguenti requisiti:

Programmazione efficiente

Gli insiemi descritti in questo argomento non funzionano efficientemente quando vengono selezionate numerose celle, righe o colonne. Per ulteriori informazioni sull'uso di questi insiemi con grandi quantità di dati, vedere Procedure consigliate per ridimensionare il controllo DataGridView Windows Form.

Vedere anche

Riferimenti

DataGridView

SelectionMode

AreAllCellsSelected

SelectedCells

SelectedRows

SelectedColumns

Altre risorse

Utilizzo della selezione e degli Appunti con il controllo DataGridView Windows Form