DataGridView.RowsAdded 이벤트

정의

DataGridView에 새 행이 추가된 다음 발생합니다.Occurs after a new row is added to the DataGridView.

public:
 event System::Windows::Forms::DataGridViewRowsAddedEventHandler ^ RowsAdded;
public event System.Windows.Forms.DataGridViewRowsAddedEventHandler RowsAdded;
member this.RowsAdded : System.Windows.Forms.DataGridViewRowsAddedEventHandler 
Public Custom Event RowsAdded As DataGridViewRowsAddedEventHandler 

예제

다음 코드 예제에서는 처리 합니다 RowsAdded 가상의 행 수를 늘리려면 이벤트 DataGridView합니다.The following code example handles the RowsAdded event to increment the number of rows in a virtual DataGridView. 행 개수는는 CellValueNeeded 처리기 및 초기화 된 셀에 새 행에 대 한 빈 셀을 표시 하는 시기를 알 수 있도록 합니다.The number of rows is used in the CellValueNeeded handler so it knows when to show a blank cell versus an initialized cell for a new row. 이 예제는에서 사용할 수 있는 보다 큰 예제의 일부는 VirtualMode 참조 항목입니다.This example is part of a larger example available in the VirtualMode reference topic.

    void VirtualConnector::dataGridView1_NewRowNeeded
        (Object^ sender, DataGridViewRowEventArgs^ e)
    {
        newRowNeeded = true;
    }

    void VirtualConnector::dataGridView1_RowsAdded
        (Object^ sender, DataGridViewRowsAddedEventArgs^ e)
    {
        if (newRowNeeded)
        {
            newRowNeeded = false;
            numberOfRows = numberOfRows + 1;
        }
    }

#pragma region Data store maintance

    void VirtualConnector::dataGridView1_CellValueNeeded
        (Object^ sender, DataGridViewCellValueEventArgs^ e)
    {
        if (store->ContainsKey(e->RowIndex))
        {
            // Use the store if the e value has been modified 
            // and stored.            
            e->Value = gcnew Int32(store->default[e->RowIndex]); 
        }
        else if (newRowNeeded && e->RowIndex == numberOfRows)
        {
            if (dataGridView1->IsCurrentCellInEditMode)
            {
                e->Value = initialValue;
            }
            else
            {
                // Show a blank e if the cursor is just loitering
                // over(the) last row.
                e->Value = String::Empty;
            }
        }
        else
        {
            e->Value = e->RowIndex;
        }
    }

    void VirtualConnector::dataGridView1_CellValuePushed
        (Object^ sender, DataGridViewCellValueEventArgs^ e)
    {
        String^ value = e->Value->ToString();
        store[e->RowIndex] = Int32::Parse(value, 
            CultureInfo::CurrentCulture);
    }
#pragma endregion
bool newRowNeeded;
private void dataGridView1_NewRowNeeded(object sender,
    DataGridViewRowEventArgs e)
{
    newRowNeeded = true;
}

const int initialSize = 5000000;
int numberOfRows = initialSize;

private void dataGridView1_RowsAdded(object sender,
     DataGridViewRowsAddedEventArgs e)
{
    if (newRowNeeded)
    {
        newRowNeeded = false;
        numberOfRows = numberOfRows + 1;
    }
}

#region "data store maintance"
const int initialValue = -1;

private void dataGridView1_CellValueNeeded(object sender,
    DataGridViewCellValueEventArgs e)
{
    if (store.ContainsKey(e.RowIndex))
    {
        // Use the store if the e value has been modified 
        // and stored.            
        e.Value = store[e.RowIndex];
    }
    else if (newRowNeeded && e.RowIndex == numberOfRows)
    {
        if (dataGridView1.IsCurrentCellInEditMode)
        {
            e.Value = initialValue;
        }
        else
        {
            // Show a blank value if the cursor is just resting
            // on the last row.
            e.Value = String.Empty;
        }
    }
    else
    {
        e.Value = e.RowIndex;
    }
}

private void dataGridView1_CellValuePushed(object sender,
    DataGridViewCellValueEventArgs e)
{
    store.Add(e.RowIndex, int.Parse(e.Value.ToString()));
}
#endregion

private Dictionary<int, int> store = new Dictionary<int, int>();
    Dim newRowNeeded As Boolean

    Private Sub dataGridView1_NewRowNeeded(ByVal sender As Object, _
        ByVal e As DataGridViewRowEventArgs) _
        Handles dataGridView1.NewRowNeeded

        newRowNeeded = True
    End Sub

    Const initialSize As Integer = 5000000
    Dim numberOfRows As Integer = initialSize

    Private Sub dataGridView1_RowsAdded(ByVal sender As Object, _
        ByVal e As DataGridViewRowsAddedEventArgs) _
        Handles dataGridView1.RowsAdded

        If newRowNeeded Then
            newRowNeeded = False
            numberOfRows = numberOfRows + 1
        End If
    End Sub

#Region "data store maintance"
    Const initialValue As Integer = -1

    Private Sub dataGridView1_CellValueNeeded(ByVal sender As Object, _
        ByVal e As DataGridViewCellValueEventArgs) _
        Handles dataGridView1.CellValueNeeded

        If store.ContainsKey(e.RowIndex) Then
            ' Use the store if the e value has been modified 
            ' and stored.
            e.Value = store(e.RowIndex)
        ElseIf newRowNeeded AndAlso e.RowIndex = numberOfRows Then
            If dataGridView1.IsCurrentCellInEditMode Then
                e.Value = initialValue
            Else
                ' Show a blank value if the cursor is just resting
                ' on the last row.
                e.Value = String.Empty
            End If
        Else
            e.Value = e.RowIndex
        End If
    End Sub

    Private Sub dataGridView1_CellValuePushed(ByVal sender As Object, _
        ByVal e As DataGridViewCellValueEventArgs) _
        Handles dataGridView1.CellValuePushed

        store.Add(e.RowIndex, CInt(e.Value))

    End Sub
#End Region

    Dim store As System.Collections.Generic.Dictionary(Of Integer, Integer) = _
        New Dictionary(Of Integer, Integer)

설명

컨트롤의 행은 새 행을 추가할 때 자동으로 정렬 되지 않습니다.Rows in the control are not automatically sorted when new rows are added. 새 행을 올바른 위치로 정렬 하려면 RowsAdded 이벤트 처리기에서 Sort 메서드를 호출 합니다.To sort new rows into their correct position, call the Sort method in a RowsAdded event handler.

사용자가 새 레코드에 대 한 행을 사용 하 여 새 행을 추가 합니다 DataGridViewRowsAddedEventArgs.RowIndex 처리기에 방금 추가한 행 보다 큰 하나는이 이벤트는 새 레코드의 행을 새 위치의 인덱스 같음에 대 한 값입니다.When the user adds a new row using the row for new records, the DataGridViewRowsAddedEventArgs.RowIndex value in the handler for this event is equal to the index of the new location of the row for new records, which is one greater than the row just added. 그러나 행을 추가할 때 프로그래밍 방식으로는 RowIndex 값은 추가 된 첫 번째 행의 인덱스입니다.When you add rows programmatically, however, the RowIndex value is the index of the first row added.

가상 모드에서이 이벤트는 CellValuePushed 이벤트 이전에 발생 하며 데이터 저장소에 새 레코드를 만드는 데 사용 하 여 CellValuePushed 이벤트 처리기에서 채울 수 있습니다.In virtual mode, this event occurs before the CellValuePushed event and can be used to create new records in your data store that you can then populate in the CellValuePushed event handler.

이벤트를 처리 하는 방법에 대 한 자세한 내용은 참조 하세요. 이벤트 처리 및 발생합니다.For more information about how to handle events, see Handling and Raising Events.

적용 대상

추가 정보