DataGridView.RowValidating 事件
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
正在驗證資料列時發生。
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
事件類型
範例
下列程式碼範例會使用 RowValidating 來檢查是否輸入有效的追蹤和發行日期。
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
備註
此事件類似于 Control.Validating 事件。 使用此事件對資料列的所有值執行驗證。 如果資料列未通過驗證,請將 CancelEventArgs.Cancel 屬性設定為 true
。 取消此事件可防止 RowValidated 發生 、 Control.Validating 和 Control.Validated 事件,也防止使用者離開不正確資料列,並防止資料列儲存至資料系結模式中的外部資料源。
如需如何處理事件的詳細資訊,請參閱 處理和引發事件。