DataGridView.Rows Vlastnost
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Získá kolekci, která obsahuje všechny řádky v ovládacím DataGridView prvku.
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
Hodnota vlastnosti
A DataGridViewRowCollection , který obsahuje všechny řádky v objektu DataGridView.
- Atributy
Příklady
Následující příklad kódu ukazuje, jak vytvořit nevázaný DataGridView; nastavit ColumnHeadersVisible, ColumnHeadersDefaultCellStylea ColumnCount vlastnosti; a použít Rows a Columns vlastnosti. Ukazuje také, jak použít verzi AutoResizeColumnHeadersHeight a AutoResizeRows metody k správné velikosti záhlaví sloupců a řádků. Chcete-li spustit tento příklad, vložte následující kód do formuláře, který obsahuje pojmenované DataGridViewdataGridView1 a tlačítko s názvem Button1, a pak zavolejte InitializeDataGridView metodu z konstruktoru formuláře nebo Load obslužné rutiny události. Ujistěte se, že jsou všechny události propojené s jejich obslužnými rutinami událostí.
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
Poznámky
Kolekci Rows můžete použít k ručnímu DataGridView naplnění ovládacího prvku místo jeho vazby ke zdroji dat. Následující příklad ukazuje, jak ručně přidat a vložit řádky. Tento příklad předpokládá, že jste do kolekce ovládacího prvku Columns přidali čtyři DataGridViewTextBoxColumn instance.
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");
Podrobný příklad, který programově naplní nevázaný DataGridView ovládací prvek, najdete v části Příklad.
Řádky obsahují kromě hodnot buněk také informace o stylu. Z tohoto důvodu můžete chtít přidat nebo vložit řádky na základě existujících řádků, které už máte styl. Můžete to provést pomocí AddCopy, AddCopies, InsertCopya InsertCopies metody.
Kolekci Rows můžete také použít k úpravě hodnot v ovládacím prvku nebo k odebrání řádků. Hodnoty nebo řádky můžete odebrat bez ohledu na to, jestli je ovládací prvek vázán na externí zdroj dat. Pokud existuje zdroj dat, změny se provádějí přímo ve zdroji dat. Možná ale budete muset odeslat aktualizace zdroje dat do vzdálené databáze. Další informace naleznete v tématu Postupy: Vytvoření vazby dat k ovládacímu prvku Windows Forms DataGridView.
Následující příklad ukazuje, jak upravit hodnoty buněk programově.
' 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";
Kromě standardních funkcí kolekce můžete pomocí Rows kolekce načíst informace o řádcích. Použijte metodu GetRowState k určení stavu konkrétního řádku. GetRowCount Pomocí a GetRowsHeight metod určete počet řádků nebo kombinovanou výšku řádků v určitém stavu. Chcete-li načíst index řádku s určitým stavem, použijte GetFirstRow, GetLastRow, GetNextRowa GetPreviousRow metody.
Následující příklad ukazuje, jak načíst index prvního vybraného řádku a pak ho použít k programovému odstranění řádku.
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);
}
Pokud chcete zvýšit výkon, DataGridViewRowCollection vrácené Rows vlastností může zahrnovat sdílené a nesdílené řádky. Sdílené řádky sdílejí paměť, aby se snížily náklady na velkou sadu záznamů. Pokud je sada záznamů velmi velká, při přístupu k Rows vlastnosti byste měli být opatrní, abyste řádky sdíleli co nejvíce.
Další informace naleznete v tématu Osvědčené postupy pro škálování ovládacího prvku Windows Forms DataGridView.