DataGridView.Rows Propiedad
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Obtiene una colección que contiene todas las filas del control DataGridView.
public:
property System::Windows::Forms::DataGridViewRowCollection ^ Rows { System::Windows::Forms::DataGridViewRowCollection ^ get(); };
[System.ComponentModel.Browsable(false)]
public System.Windows.Forms.DataGridViewRowCollection Rows { get; }
[<System.ComponentModel.Browsable(false)>]
member this.Rows : System.Windows.Forms.DataGridViewRowCollection
Public ReadOnly Property Rows As DataGridViewRowCollection
Valor de propiedad
Colección DataGridViewRowCollection que contiene todas las filas del control DataGridView.
- Atributos
Ejemplos
En el ejemplo de código siguiente se muestra cómo crear un elemento unbound DataGridView; establecer las ColumnHeadersVisiblepropiedades , ColumnHeadersDefaultCellStyley ColumnCount y usar las Rows propiedades y Columns . También muestra cómo usar una versión de los AutoResizeColumnHeadersHeight métodos y AutoResizeRows para ajustar correctamente el tamaño de los encabezados de columna y las filas. Para ejecutar este ejemplo, pegue el código siguiente en un formulario que contenga un DataGridViewdataGridView1
nombre y un botón denominado Button1
y, a continuación, llame al InitializeDataGridView
método desde el constructor o Load controlador de eventos del formulario. Asegúrese de que todos los eventos están conectados con sus controladores de eventos.
void InitializeDataGridView()
{
this->Size = System::Drawing::Size( 600, 600 );
dataGridView1->Size = System::Drawing::Size( 450, 400 );
// Create an unbound DataGridView by declaring a column count.
dataGridView1->ColumnCount = 4;
dataGridView1->ColumnHeadersVisible = true;
// Set the column header style.
DataGridViewCellStyle ^ columnHeaderStyle = gcnew DataGridViewCellStyle;
columnHeaderStyle->BackColor = Color::Aqua;
columnHeaderStyle->Font = gcnew System::Drawing::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.
array<String^>^row1 = gcnew array<String^>{
"Meatloaf","Main Dish","ground beef","**"
};
array<String^>^row2 = gcnew array<String^>{
"Key Lime Pie","Dessert","lime juice, evaporated milk","****"
};
array<String^>^row3 = gcnew array<String^>{
"Orange-Salsa Pork Chops","Main Dish","pork chops, salsa, orange juice","****"
};
array<String^>^row4 = gcnew array<String^>{
"Black Bean and Rice Salad","Salad","black beans, brown rice","****"
};
array<String^>^row5 = gcnew array<String^>{
"Chocolate Cheesecake","Dessert","cream cheese","***"
};
array<String^>^row6 = gcnew array<String^>{
"Black Bean Dip","Appetizer","black beans, sour cream","***"
};
array<Object^>^rows = {row1,row2,row3,row4,row5,row6};
System::Collections::IEnumerator^ myEnum = rows->GetEnumerator();
while ( myEnum->MoveNext() )
{
array<String^>^rowArray = safe_cast<array<String^>^>(myEnum->Current);
dataGridView1->Rows->Add( rowArray );
}
}
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);
}
void InitializeContextMenu()
{
// Create the menu item.
MenuItem^ getRecipe = gcnew MenuItem( "Search for recipe",gcnew System::EventHandler( this, &Form1::OnMenuClick ) );
// Add the menu item to the shortcut menu.
System::Windows::Forms::ContextMenuStrip^ recipeMenu = gcnew System::Windows::Forms::ContextMenuStrip();
// Set the shortcut menu for the first column.
dataGridView1->Columns[ 0 ]->ContextMenuStrip = recipeMenu;
}
void OnMenuClick( Object^ /*sender*/, System::EventArgs^ /*e*/ )
{
if ( dataGridView1->CurrentCell != nullptr )
{
//Retrieve the recipe name.
String^ recipeName = dynamic_cast<String^>(dataGridView1->CurrentCell->Value);
//Search for the recipe.
System::Diagnostics::Process::Start( String::Format( "http://search.msn.com/results.aspx?q={0}", recipeName ), nullptr );
}
}
private:
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);
}
}
Private Sub InitializeDataGridView()
' Create an unbound DataGridView by declaring a column count.
dataGridView1.ColumnCount = 4
dataGridView1.ColumnHeadersVisible = True
' Set the column header style.
Dim columnHeaderStyle As 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.
Dim row1() As String = {"Meatloaf", "Main Dish", "ground beef", "**"}
Dim row2() As String = _
{"Key Lime Pie", "Dessert", "lime juice, evaporated milk", "****"}
Dim row3() As String = {"Orange-Salsa Pork Chops", "Main Dish", _
"pork chops, salsa, orange juice", "****"}
Dim row4() As String = {"Black Bean and Rice Salad", "Salad", _
"black beans, brown rice", "****"}
Dim row5() As String = _
{"Chocolate Cheesecake", "Dessert", "cream cheese", "***"}
Dim row6() As String = _
{"Black Bean Dip", "Appetizer", "black beans, sour cream", "***"}
Dim rows() As Object = {row1, row2, row3, row4, row5, row6}
Dim rowArray As String()
For Each rowArray In rows
dataGridView1.Rows.Add(rowArray)
Next rowArray
End Sub
Private Sub button1_Click(ByVal sender As Object, _
ByVal e As System.EventArgs) Handles button1.Click
' 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)
End Sub
Private Sub InitializeContextMenu()
' Create the menu item.
Dim getRecipe As New ToolStripMenuItem( _
"Search for recipe", Nothing, AddressOf ShortcutMenuClick)
' Add the menu item to the shortcut menu.
Dim recipeMenu As New ContextMenuStrip()
recipeMenu.Items.Add(getRecipe)
' Set the shortcut menu for the first column.
dataGridView1.Columns(0).ContextMenuStrip = recipeMenu
End Sub
Private clickedCell As DataGridViewCell
Private Sub dataGridView1_MouseDown(ByVal sender As Object, _
ByVal e As MouseEventArgs) Handles dataGridView1.MouseDown
' If the user right-clicks a cell, store it for use by the
' shortcut menu.
If e.Button = MouseButtons.Right Then
Dim hit As DataGridView.HitTestInfo = _
dataGridView1.HitTest(e.X, e.Y)
If hit.Type = DataGridViewHitTestType.Cell Then
clickedCell = _
dataGridView1.Rows(hit.RowIndex).Cells(hit.ColumnIndex)
End If
End If
End Sub
Private Sub ShortcutMenuClick(ByVal sender As Object, _
ByVal e As System.EventArgs)
If (clickedCell IsNot Nothing) Then
'Retrieve the recipe name.
Dim recipeName As String = CStr(clickedCell.Value)
'Search for the recipe.
System.Diagnostics.Process.Start( _
"http://search.msn.com/results.aspx?q=" + recipeName)
End If
End Sub
Comentarios
Puede usar la Rows colección para rellenar manualmente un DataGridView control en lugar de enlazarlo a un origen de datos. En el ejemplo siguiente se muestra cómo agregar e insertar filas manualmente. En este ejemplo se supone que ha agregado cuatro DataGridViewTextBoxColumn instancias a la colección del Columns control.
Me.dataGridView1.Rows.Add("five", "six", "seven", "eight")
Me.dataGridView1.Rows.Insert(0, "one", "two", "three", "four")
this.dataGridView1.Rows.Add("five", "six", "seven", "eight");this.dataGridView1.Rows.Insert(0, "one", "two", "three", "four");
Para obtener un ejemplo detallado que rellena mediante programación un control independiente DataGridView , vea la sección Ejemplo.
Las filas incluyen información de estilo además de los valores de celda. Por este motivo, es posible que desee agregar o insertar filas en función de las filas existentes a las que ya ha aplicado estilo. Puede hacerlo mediante los AddCopymétodos , AddCopies, InsertCopyy InsertCopies .
También puede usar la Rows colección para modificar los valores del control o para quitar filas. Puede modificar valores o quitar filas independientemente de si el control está enlazado a un origen de datos externo. Si hay un origen de datos, los cambios se realizan directamente en el origen de datos. Sin embargo, es posible que tenga que insertar las actualizaciones del origen de datos en una base de datos remota. Para obtener más información, consulte Cómo: Enlazar datos al control DataGridView de Windows Forms.
En el ejemplo siguiente se muestra cómo modificar los valores de celda mediante programación.
' Modify the value in the first cell of the second row.
Me.dataGridView1.Rows[1].Cells[0].Value = "new value"
' The previous line is equivalent to the following line.
Me.dataGridView1[0, 1].Value = "new value"
// 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";
Además de las funcionalidades de recopilación estándar, puede usar la Rows colección para recuperar información sobre las filas. Use el GetRowState método para determinar el estado de una fila determinada. Use los GetRowCount métodos y GetRowsHeight para determinar el número de filas o el alto combinado de filas en un estado determinado. Para recuperar el índice de una fila con un estado determinado, use los GetFirstRowmétodos , GetLastRow, GetNextRowy GetPreviousRow .
En el ejemplo siguiente se muestra cómo recuperar el índice de la primera fila seleccionada y, a continuación, usarlo para eliminar la fila mediante programación.
Dim rowToDelete As Int32 = Me.dataGridView1.Rows.GetFirstRow( _
DataGridViewElementStates.Selected)
If rowToDelete > -1 Then
Me.dataGridView1.Rows.RemoveAt(rowToDelete)
End If
Int32 rowToDelete = this.dataGridView1.Rows.GetFirstRow(
DataGridViewElementStates.Selected);
if (rowToDelete > -1)
{
this.dataGridView1.Rows.RemoveAt(rowToDelete);
}
Para mejorar el rendimiento, el DataGridViewRowCollection devuelto por la Rows propiedad puede incluir filas compartidas y no compartidas. Las filas compartidas comparten memoria para reducir el costo de un conjunto de registros grande. Si el conjunto de registros es muy grande, debe tener cuidado de mantener las filas compartidas tanto como sea posible al acceder a la Rows propiedad .
Para obtener más información, consulte Procedimientos recomendados para ajustar la escala del control DataGridView en Windows Forms.