DataGridView.Rows 속성
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
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
속성 값
DataGridViewRowCollection의 모든 행을 포함하는 DataGridView입니다.
- 특성
예제
다음 코드 예제에서는 언바운드DataGridView를 만들고 , ColumnHeadersDefaultCellStyle및 ColumnCount 속성을 설정하고 ColumnHeadersVisible및 Columns 속성을 사용하는 Rows 방법을 보여 줍니다. 또한 및 AutoResizeRows 메서드 버전을 사용하여 열 머리글 및 행의 AutoResizeColumnHeadersHeight 크기를 적절하게 조정하는 방법을 보여 줍니다. 이 예제를 실행하려면 다음 코드를 명명 dataGridView1
된 및 라는 Button1
단추가 포함된 DataGridView 폼에 붙여넣은 다음 폼의 생성자 또는 Load 이벤트 처리기에서 메서드를 호출 InitializeDataGridView
합니다. 모든 이벤트가 해당 이벤트 처리기와 연결되어 있는지 확인합니다.
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
설명
컬렉션을 사용하여 데이터 원본에 Rows 바인딩하는 대신 컨트롤을 DataGridView 수동으로 채울 수 있습니다. 다음 예제에서는 행을 수동으로 추가하고 삽입하는 방법을 보여 줍니다. 이 예제에서는 컨트롤의 Columns 컬렉션에 4개의 DataGridViewTextBoxColumn 인스턴스를 추가한 것으로 가정합니다.
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");
프로그래밍 방식으로 언바운드 DataGridView 컨트롤을 채우는 자세한 예제는 예제 섹션을 참조하세요.
행에는 셀 값 외에도 스타일 정보가 포함됩니다. 이러한 이유로 이미 스타일을 지정한 기존 행에 따라 행을 추가하거나 삽입할 수 있습니다. , , AddCopiesInsertCopy및 InsertCopies 메서드를 AddCopy사용하여 이 작업을 수행할 수 있습니다.
컬렉션을 사용하여 Rows 컨트롤의 값을 수정하거나 행을 제거할 수도 있습니다. 컨트롤이 외부 데이터 원본에 바인딩되어 있는지 여부에 관계없이 값을 수정하거나 행을 제거할 수 있습니다. 데이터 원본이 있는 경우 변경 내용이 데이터 원본에 직접 적용됩니다. 그러나 데이터 원본 업데이트를 원격 데이터베이스에 푸시해야 할 수도 있습니다. 자세한 내용은 방법: Windows Forms DataGridView 컨트롤에 데이터 바인딩을 참조하세요.
다음 예제에서는 프로그래밍 방식으로 셀 값을 수정하는 방법을 보여 줍니다.
' 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";
표준 컬렉션 기능 외에도 컬렉션을 사용하여 Rows 행에 대한 정보를 검색할 수 있습니다. 메서드를 GetRowState 사용하여 특정 행의 상태를 확인합니다. 및 GetRowsHeight 메서드를 GetRowCount 사용하여 특정 상태의 행 수 또는 결합된 행 높이를 확인합니다. 특정 상태가 있는 행의 인덱스 검색하려면 , , GetLastRowGetNextRow및 GetPreviousRow 메서드를 GetFirstRow사용합니다.
다음 예제에서는 첫 번째 선택한 행의 인덱스 검색한 다음 이를 사용하여 프로그래밍 방식으로 행을 삭제하는 방법을 보여 줍니다.
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);
}
성능을 향상시키기 위해 속성에서 반환되는 DataGridViewRowCollection 에는 Rows 공유 행과 공유되지 않은 행이 포함될 수 있습니다. 공유 행은 메모리를 공유하여 큰 레코드 집합의 비용을 줄입니다. 레코드 집합이 매우 큰 경우 속성에 액세스할 Rows 때 행을 가능한 한 많이 공유하도록 주의해야 합니다.
자세한 내용은 Windows Forms DataGridView 컨트롤의 크기를 조정하는 최선의 방법을 참조하세요.
적용 대상
추가 정보
.NET