DataGridView.Rows Свойство

Определение

Получает коллекцию, содержащую все строки в элементе управления DataGridView.

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

Значение свойства

Объект DataGridViewRowCollection, содержащий все строки в элементе управления DataGridView.

Атрибуты

Примеры

В следующем примере кода показано, как создать несвязанный DataGridViewобъект ; задать ColumnHeadersVisibleсвойства , ColumnHeadersDefaultCellStyleи ColumnCount и использовать Rows свойства и Columns . В нем также показано, как использовать версию методов и для AutoResizeRows правильного AutoResizeColumnHeadersHeight размера заголовков столбцов и строк. Чтобы запустить этот пример, вставьте следующий код в форму, содержащую DataGridView имя dataGridView1 и кнопку с именем Button1, а затем вызовите InitializeDataGridView метод из конструктора формы или Load обработчика событий. Убедитесь, что все события связаны с их обработчиками событий.

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);
    }
}

Комментарии

Коллекцию Rows можно использовать для заполнения DataGridView элемента управления вручную вместо привязки его к источнику данных. В следующем примере показано, как вручную добавлять и вставлять строки. В этом примере предполагается, что вы добавили четыре DataGridViewTextBoxColumn экземпляра Columns в коллекцию элемента управления.

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

Подробный пример программного заполнения неограниченного DataGridView элемента управления см. в разделе Пример.

Строки содержат сведения о стиле в дополнение к значениям ячеек. По этой причине может потребоваться добавить или вставить строки на основе существующих строк, которые уже были стили. Это можно сделать с помощью AddCopyметодов , AddCopies, InsertCopyи InsertCopies .

Коллекцию Rows также можно использовать для изменения значений в элементе управления или для удаления строк. Вы можете изменять значения или удалять строки независимо от того, привязан ли элемент управления к внешнему источнику данных. При наличии источника данных изменения вносятся непосредственно в источник данных. Однако может потребоваться отправить обновления источника данных в удаленную базу данных. Дополнительные сведения см. в статье Практическое руководство. Привязка данных к элементу управления DataGridView в Windows Forms.

В следующем примере показано, как изменить значения ячеек программным способом.

// 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";

Помимо стандартных возможностей сбора, коллекцию Rows можно использовать для получения сведений о строках. Используйте метод для GetRowState определения состояния конкретной строки. GetRowCount Используйте методы и GetRowsHeight для определения количества строк или объединенной высоты строк в определенном состоянии. Чтобы получить индекс строки с определенным состоянием, используйте методы GetFirstRow, GetLastRow, GetNextRowи GetPreviousRow .

В следующем примере показано, как получить индекс первой выбранной строки, а затем использовать его для программного удаления строки.

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

Чтобы повысить производительность, возвращаемое свойством Rows , DataGridViewRowCollection может включать общие и не общие строки. Общие строки совместно используют память, чтобы снизить затраты на большой набор записей. Если набор записей очень большой, при доступе к свойству следует соблюдать осторожность, чтобы строки были общими Rows как можно больше.

Подробнее см. в разделе Масштабирование элемента управления DataGridView в Windows Forms.

Применяется к

Продукт Версии
.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

См. также раздел