DataGridViewRowCollection.AddRange(DataGridViewRow[]) 메서드
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
지정된 개체를 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 열이 없습니다.
-또는-
배열에서 하나 이상의 행에 dataGridViewRowsDataGridView 없는 null속성 값이 있습니다.
-또는-
배열에서 하나 이상의 행에 dataGridViewRows 속성 값true이 Selected 있습니다.
-또는-
배열에서 두 개 이상의 행이 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
설명
가능한 경우 메서드는
컨트롤의 행은 새 행이 추가될 때 자동으로 정렬되지 않습니다. 새 행을 올바른 위치로 정렬하려면 이벤트 처리기 DataGridView.Sort 에서 메서드를 DataGridView.RowsAdded 호출합니다. 사용자가 셀을 DataGridView.Sort 수정할 때 이벤트 처리기에서 CellValueChanged 메서드를 호출하여 행을 정렬할 수도 있습니다.
중요합니다
버그로 인해 메서드는 AddRange 속성 true 이 있고 새 레코드의 행이 선택된 경우 AllowUserToAddRows 애플리케이션의 응답을 중지합니다. 이 버그를 해결하려면 이 메서드를 호출하기 전에 행 선택을 취소한 다음 행을 다시 선택해야 합니다. 자세한 내용은 이 항목의 코드 예제를 참조하세요.