DataGridView.Rows Proprietà

Definizione

Ottiene una raccolta contenente tutte le righe nel controllo DataGridView.

C#
[System.ComponentModel.Browsable(false)]
public System.Windows.Forms.DataGridViewRowCollection Rows { get; }

Valore della proprietà

Oggetto DataGridViewRowCollection che contiene tutte le righe in DataGridView.

Attributi

Esempio

Nell'esempio di codice seguente viene illustrato come creare un oggetto non associato DataGridView; impostare le ColumnHeadersVisibleproprietà , ColumnHeadersDefaultCellStylee ColumnCount e utilizzare le Rows proprietà e Columns . Viene inoltre illustrato come usare una versione dei AutoResizeColumnHeadersHeight metodi e AutoResizeRows per ridimensionare correttamente le intestazioni di colonna e le righe. Per eseguire questo esempio, incollare il codice seguente in una maschera contenente un DataGridView oggetto denominato dataGridView1 e un pulsante denominato Button1e quindi chiamare il InitializeDataGridView metodo dal costruttore o Load dal gestore eventi del modulo. Assicurarsi che tutti gli eventi siano connessi con i gestori eventi.

C#
private void InitializeDataGridView()
{
    // Create an unbound DataGridView by declaring a column count.
    dataGridView1.ColumnCount = 4;
    dataGridView1.ColumnHeadersVisible = true;

    // Set the column header style.
    DataGridViewCellStyle columnHeaderStyle = new DataGridViewCellStyle();

    columnHeaderStyle.BackColor = Color.Beige;
    columnHeaderStyle.Font = new Font("Verdana", 10, FontStyle.Bold);
    dataGridView1.ColumnHeadersDefaultCellStyle = columnHeaderStyle;

    // Set the column header names.
    dataGridView1.Columns[0].Name = "Recipe";
    dataGridView1.Columns[1].Name = "Category";
    dataGridView1.Columns[2].Name = "Main Ingredients";
    dataGridView1.Columns[3].Name = "Rating";

    // Populate the rows.
    string[] row1 = new string[] { "Meatloaf", "Main Dish", "ground beef",
        "**" };
    string[] row2 = new string[] { "Key Lime Pie", "Dessert", 
        "lime juice, evaporated milk", "****" };
    string[] row3 = new string[] { "Orange-Salsa Pork Chops", "Main Dish", 
        "pork chops, salsa, orange juice", "****" };
    string[] row4 = new string[] { "Black Bean and Rice Salad", "Salad", 
        "black beans, brown rice", "****" };
    string[] row5 = new string[] { "Chocolate Cheesecake", "Dessert", 
        "cream cheese", "***" };
    string[] row6 = new string[] { "Black Bean Dip", "Appetizer", 
        "black beans, sour cream", "***" };
    object[] rows = new object[] { row1, row2, row3, row4, row5, row6 };

    foreach (string[] rowArray in rows)
    {
        dataGridView1.Rows.Add(rowArray);
    }
}

private void button1_Click(object sender, System.EventArgs e)
{
    // Resize the height of the column headers. 
    dataGridView1.AutoResizeColumnHeadersHeight();

    // Resize all the row heights to fit the contents of all non-header cells.
    dataGridView1.AutoResizeRows(
        DataGridViewAutoSizeRowsMode.AllCellsExceptHeaders);
}

private void InitializeContextMenu()
{
    // Create the menu item.
    ToolStripMenuItem getRecipe = new ToolStripMenuItem("Search for recipe", null,
        new System.EventHandler(ShortcutMenuClick));

    // Add the menu item to the shortcut menu.
    ContextMenuStrip recipeMenu = new ContextMenuStrip();
    recipeMenu.Items.Add(getRecipe); 

    // Set the shortcut menu for the first column.
    dataGridView1.Columns[0].ContextMenuStrip = recipeMenu;
    dataGridView1.MouseDown += new MouseEventHandler(dataGridView1_MouseDown);
}

private DataGridViewCell clickedCell;

private void dataGridView1_MouseDown(object sender, MouseEventArgs e)
{
// If the user right-clicks a cell, store it for use by the shortcut menu.
    if (e.Button == MouseButtons.Right)
    {
        DataGridView.HitTestInfo hit = dataGridView1.HitTest(e.X, e.Y);
        if (hit.Type == DataGridViewHitTestType.Cell)
        {
            clickedCell =
                dataGridView1.Rows[hit.RowIndex].Cells[hit.ColumnIndex];
        }
    }
}

private void ShortcutMenuClick(object sender, System.EventArgs e)
{
    if (clickedCell != null)
    {
        //Retrieve the recipe name.
        string recipeName = (string)clickedCell.Value;

        //Search for the recipe.
        System.Diagnostics.Process.Start(
            "http://search.msn.com/results.aspx?q=" + recipeName);
            //null);
    }
}

Commenti

È possibile utilizzare la Rows raccolta per popolare manualmente un DataGridView controllo anziché associarlo a un'origine dati. Nell'esempio seguente viene illustrato come aggiungere e inserire manualmente righe. In questo esempio si presuppone che siano state aggiunte quattro DataGridViewTextBoxColumn istanze alla raccolta del Columns controllo.

C#
this.dataGridView1.Rows.Add("five", "six", "seven", "eight");this.dataGridView1.Rows.Insert(0, "one", "two", "three", "four");

Per un esempio dettagliato che popola a livello di codice un controllo non associato DataGridView , vedere la sezione Esempio.

Le righe includono informazioni sullo stile oltre ai valori delle celle. Per questo motivo, è possibile aggiungere o inserire righe in base alle righe esistenti già in stile. A tale scopo, usare i AddCopymetodi , AddCopies, InsertCopye InsertCopies .

È anche possibile utilizzare la Rows raccolta per modificare i valori nel controllo o per rimuovere righe. È possibile modificare i valori o rimuovere righe indipendentemente dal fatto che il controllo sia associato a un'origine dati esterna. Se è presente un'origine dati, le modifiche vengono apportate direttamente all'origine dati. Potrebbe comunque essere necessario eseguire il push degli aggiornamenti dell'origine dati in un database remoto. Per altre informazioni, vedere Procedura: Associare dati al controllo DataGridView Windows Forms.

Nell'esempio seguente viene illustrato come modificare i valori delle celle a livello di codice.

C#
// Modify the value in the first cell of the second row.
this.dataGridView1.Rows[1].Cells[0].Value = "new value";

// The previous line is equivalent to the following line.
this.dataGridView1[0, 1].Value = "new value";

Oltre alle funzionalità di raccolta standard, è possibile usare la Rows raccolta per recuperare informazioni sulle righe. Utilizzare il GetRowState metodo per determinare lo stato di una determinata riga. Utilizzare i GetRowCount metodi e GetRowsHeight per determinare il numero di righe o l'altezza combinata delle righe in uno stato specifico. Per recuperare l'indice di una riga con uno stato specifico, usare i GetFirstRowmetodi , GetLastRow, GetNextRowe GetPreviousRow .

Nell'esempio seguente viene illustrato come recuperare l'indice della prima riga selezionata e quindi usarlo per eliminare la riga a livello di codice.

C#
Int32 rowToDelete = this.dataGridView1.Rows.GetFirstRow(
    DataGridViewElementStates.Selected);
if (rowToDelete > -1)
{
    this.dataGridView1.Rows.RemoveAt(rowToDelete);
}

Per migliorare le prestazioni, l'oggetto DataGridViewRowCollection restituito dalla Rows proprietà può includere righe condivise e non condivise. Le righe condivise condividono la memoria per ridurre il costo di un set di record di grandi dimensioni. Se il set di record è molto grande, è necessario prestare attenzione a mantenere le righe condivise il più possibile quando si accede alla Rows proprietà .

Per altre informazioni, vedere Procedure consigliate per ridimensionare il controllo DataGridView Windows Form.

Si applica a

Prodotto Versioni
.NET Framework 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
Windows Desktop 3.0, 3.1, 5, 6, 7, 8, 9, 10

Vedi anche