다음을 통해 공유


DataGridViewRowCollection.AddRange(DataGridViewRow[]) 메서드

정의

컬렉션에 지정된 DataGridViewRow 개체를 추가합니다.

public:
 virtual void AddRange(... cli::array <System::Windows::Forms::DataGridViewRow ^> ^ dataGridViewRows);
public virtual void AddRange (params System.Windows.Forms.DataGridViewRow[] dataGridViewRows);
abstract member AddRange : System.Windows.Forms.DataGridViewRow[] -> unit
override this.AddRange : System.Windows.Forms.DataGridViewRow[] -> unit
Public Overridable Sub AddRange (ParamArray dataGridViewRows As DataGridViewRow())

매개 변수

dataGridViewRows
DataGridViewRow[]

DataGridViewRow 에 추가되는 DataGridViewRowCollection개체의 배열입니다.

예외

dataGridViewRows이(가) null인 경우

dataGridViewRows 에 행이 하나만 있으며, 이 행에는 컨트롤에 있는 열보다 많은 셀이 포함되어 있습니다.

연결된 DataGridView 컨트롤이 일시적으로 새 행이 추가되지 않도록 하는 다음 작업 중 하나를 수행합니다.

  • 컨트롤의 모든 셀을 선택합니다.

  • 선택 영역 지우기.

또는

이 메서드는 다음 DataGridView 이벤트 중 하나의 처리기에서 호출됩니다.

또는

DataSourceDataGridView 속성이 null이 아닙니다.

또는

dataGridViewRows 배열에 있는 하나 이상의 항목이 null인 경우

또는

DataGridView 에 열이 없습니다.

또는

dataGridViewRows 배열에 있는 하나 이상의 행에 대해 DataGridView 속성 값이 null이 아닌 경우

또는

dataGridViewRows 배열에 있는 하나 이상의 행에 대해 Selected 속성 값이 true인 경우

또는

dataGridViewRows 배열에 있는 둘 이상의 행이 동일한 경우

또는

dataGridViewRows 배열에 있는 하나 이상의 행에 컨트롤의 해당 열 형식과 호환되지 않는 형식의 셀이 하나 이상 포함되어 있는 경우

또는

dataGridViewRows 배열에 있는 하나 이상의 행에 컨트롤의 열 수보다 많은 셀이 포함되어 있는 경우

또는

이 작업에서는 고정되지 않은 행 뒤에 고정된 행을 추가합니다.

예제

다음 코드 예제를 사용 AddRange 하는 방법에 설명 섹션에 표시 된 버그를 해결 하기 위해 새 레코드에 대 한 행을 선택 하는 경우 메서드입니다.

// Workaround for bug that prevents DataGridViewRowCollection.AddRange
// from working when the row for new records is selected. 
private void AddRows(params DataGridViewRow[] rows)
{
    InsertRows(dataGridView1.RowCount - 1, rows);
}

// Workaround for bug that prevents DataGridViewRowCollection.InsertRange
// from working when any rows before the insertion index are selected.
private void InsertRows(int index, params DataGridViewRow[] rows)
{
    System.Collections.Generic.List<int> selectedIndexes =
        new System.Collections.Generic.List<int>();
    foreach (DataGridViewRow row in dataGridView1.SelectedRows)
    {
        if (row.Index >= index)
        {
            selectedIndexes.Add(row.Index);
            row.Selected = false;
        }
    }
    dataGridView1.Rows.InsertRange(index, rows);
    foreach (int selectedIndex in selectedIndexes)
    {
        dataGridView1.Rows[selectedIndex].Selected = true;
    }
}
' Workaround for bug that prevents DataGridViewRowCollection.AddRange
' from working when the row for new records is selected. 
Private Sub AddRows(ByVal ParamArray rows As DataGridViewRow())
    InsertRows(dataGridView1.RowCount - 1, rows)
End Sub

' Workaround for bug that prevents DataGridViewRowCollection.InsertRange
' from working when any rows before the insertion index are selected.
Private Sub InsertRows(ByVal index As Integer, _
    ByVal ParamArray rows As DataGridViewRow())

    Dim selectedIndexes As New System.Collections.Generic.List(Of Integer)

    For Each row As DataGridViewRow In dataGridView1.SelectedRows
        If row.Index >= index Then
            selectedIndexes.Add(row.Index)
            row.Selected = False
        End If
    Next row

    dataGridView1.Rows.InsertRange(index, rows)

    For Each selectedIndex As Integer In selectedIndexes
        dataGridView1.Rows(selectedIndex).Selected = True
    Next selectedIndex

End Sub

설명

가능한 경우 메서드는 AddRange 공유 행을 에 DataGridViewRowCollection추가합니다. 그렇지 않으면 새 행이 공유되지 않습니다. 자세한 내용은 Windows Forms DataGridView 컨트롤의 크기를 조정하는 최선의 방법을 참조하세요.

컨트롤의 행은 새 행이 추가될 때 자동으로 정렬되지 않습니다. 새 행을 올바른 위치로 정렬하려면 이벤트 처리기에서 메서드를 DataGridView.RowsAdded 호출 DataGridView.Sort 합니다. 사용자가 셀을 DataGridView.Sort 수정할 때 이벤트 처리기에서 CellValueChanged 메서드를 호출하여 행을 정렬할 수도 있습니다.

중요

버그로 인해를 AddRange 메서드는 애플리케이션 중지 응답 경우를 확인 합니다 AllowUserToAddRows 속성이 true 새 레코드에 대 한 행을 선택 하 고 합니다. 이 버그를 해결하려면 이 메서드를 호출하기 전에 행 선택을 취소한 다음 행을 다시 선택해야 합니다. 자세한 내용은 이 항목의 코드 예제를 참조하세요.

적용 대상

추가 정보