Share via


DataGridView.RowValidating Kejadian

Definisi

Terjadi saat baris sedang memvalidasi.

public:
 event System::Windows::Forms::DataGridViewCellCancelEventHandler ^ RowValidating;
public event System.Windows.Forms.DataGridViewCellCancelEventHandler RowValidating;
public event System.Windows.Forms.DataGridViewCellCancelEventHandler? RowValidating;
member this.RowValidating : System.Windows.Forms.DataGridViewCellCancelEventHandler 
Public Custom Event RowValidating As DataGridViewCellCancelEventHandler 

Jenis Acara

Contoh

Contoh kode berikut menggunakan RowValidating untuk memeriksa apakah tanggal trek dan rilis yang valid dimasukkan.

private void ValidateByRow(Object sender, 
    DataGridViewCellCancelEventArgs data) 
{
    DataGridViewRow row = 
        songsDataGridView.Rows[data.RowIndex];
    DataGridViewCell trackCell = 
        row.Cells[songsDataGridView.Columns["Track"].Index];
    DataGridViewCell dateCell = 
        row.Cells[songsDataGridView.Columns["Release Date"].Index];
    data.Cancel = !(IsTrackGood(trackCell) && IsDateGood(dateCell));
}

private Boolean IsTrackGood(DataGridViewCell cell)
{
    Int32 cellValueAsInt;
    if (cell.Value.ToString().Length == 0)
    {
        cell.ErrorText = "Please enter a track";
        songsDataGridView.Rows[cell.RowIndex].ErrorText = 
            "Please enter a track";
        return false;
    }
    else if (cell.Value.ToString().Equals("0"))
    {
        cell.ErrorText = "Zero is not a valid track";
        songsDataGridView.Rows[cell.RowIndex].ErrorText =
            "Zero is not a valid track";
        return false;
    }
    else if (!Int32.TryParse(cell.Value.ToString(), out cellValueAsInt))
    {
        cell.ErrorText = "A Track must be a number";
        songsDataGridView.Rows[cell.RowIndex].ErrorText =
            "A Track must be a number";
        return false;
    }
    return true;
}

private Boolean IsDateGood(DataGridViewCell cell) 
{
    if (cell.Value == null)
    {
        cell.ErrorText = "Missing date";
        songsDataGridView.Rows[cell.RowIndex].ErrorText = 
            "Missing date";
        return false;
    }
    else
    {
        try
        {
            DateTime.Parse(cell.Value.ToString());
        }
        catch (FormatException)
        {
            cell.ErrorText = "Invalid format";
            songsDataGridView.Rows[cell.RowIndex].ErrorText = 
                "Invalid format";

            return false;
        }
    }
    return true;
}
Private Sub ValidateByRow(ByVal sender As Object, _
    ByVal data As DataGridViewCellCancelEventArgs) _
    Handles songsDataGridView.RowValidating

    Dim row As DataGridViewRow = _
        songsDataGridView.Rows(data.RowIndex)
    Dim trackCell As DataGridViewCell = _
        row.Cells(songsDataGridView.Columns("Track").Index)
    Dim dateCell As DataGridViewCell = _
        row.Cells(songsDataGridView.Columns("Release Date").Index)
    data.Cancel = Not (IsTrackGood(trackCell) _
        AndAlso IsDateGood(dateCell))
End Sub

Private Function IsTrackGood(ByRef cell As DataGridViewCell) As Boolean

    If cell.Value.ToString().Length = 0 Then
        cell.ErrorText = "Please enter a track"
        songsDataGridView.Rows(cell.RowIndex).ErrorText = _
            "Please enter a track"
        Return False
    ElseIf cell.Value.ToString().Equals("0") Then
        cell.ErrorText = "Zero is not a valid track"
        songsDataGridView.Rows(cell.RowIndex).ErrorText = _
            "Zero is not a valid track"
        Return False
    ElseIf Not Integer.TryParse( _
        cell.Value.ToString(), New Integer()) Then
        cell.ErrorText = "A Track must be a number"
        songsDataGridView.Rows(cell.RowIndex).ErrorText = _
            "A Track must be a number"
        Return False
    End If
    Return True
End Function

Private Function IsDateGood(ByRef cell As DataGridViewCell) As Boolean

    If cell.Value Is Nothing Then
        cell.ErrorText = "Missing date"
        songsDataGridView.Rows(cell.RowIndex).ErrorText = _
            "Missing date"
        Return False
    Else
        Try
            DateTime.Parse(cell.Value.ToString())
        Catch ex As FormatException

            cell.ErrorText = "Invalid format"
            songsDataGridView.Rows(cell.RowIndex).ErrorText = _
                "Invalid format"

            Return False
        End Try
    End If
    Return True
End Function

Keterangan

Kejadian ini dianalogikan dengan peristiwa tersebut Control.Validating . Gunakan kejadian ini untuk melakukan validasi pada semua nilai baris. Jika baris tidak lulus validasi, atur CancelEventArgs.Cancel properti ke true. Membatalkan peristiwa ini mencegah RowValidatedkejadian , Control.Validating, dan Control.Validated terjadi, dan juga mencegah pengguna meninggalkan baris yang tidak valid dan mencegah baris disimpan ke sumber data eksternal dalam mode terikat data.

Untuk informasi selengkapnya tentang cara menangani peristiwa, lihat Menangani dan Menaikkan Peristiwa.

Berlaku untuk

Lihat juga