DataGridViewCell.ErrorText Eigenschaft
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Ruft den Text ab, mit dem ein der Zelle zugeordneter Fehlerzustand beschrieben wird, oder legt diesen Text fest.
public:
property System::String ^ ErrorText { System::String ^ get(); void set(System::String ^ value); };
[System.ComponentModel.Browsable(false)]
public string ErrorText { get; set; }
[<System.ComponentModel.Browsable(false)>]
member this.ErrorText : string with get, set
Public Property ErrorText As String
Eigenschaftswert
Der Text, mit dem ein der Zelle zugeordneter Fehlerzustand beschrieben wird.
- Attribute
Beispiele
Im folgenden Codebeispiel wird veranschaulicht, wie diese Eigenschaft bei der Behandlung von Fehlerbedingungen in einem ungebundenen DataGridViewverwendet wird. Die AnnotateCell
-Methode legt eine Fehlermeldungszeichenfolge auf die ErrorText -Eigenschaft fest.
void dataGridView1_CellValidating( Object^ /*sender*/, DataGridViewCellValidatingEventArgs^ newValue )
{
DataGridViewColumn^ column = dataGridView1->Columns[ newValue->ColumnIndex ];
if ( column->Name->Equals( "Track" ) )
{
CheckTrack( newValue );
}
else
if ( column->Name->Equals( "Release Date" ) )
{
CheckDate( newValue );
}
}
void CheckTrack( DataGridViewCellValidatingEventArgs^ newValue )
{
Int32 ignored;
if ( newValue->FormattedValue->ToString() == String::Empty )
{
NotifyUserAndForceRedo( "Please enter a track", newValue );
}
else
if ( !Int32::TryParse( newValue->FormattedValue->ToString(), ignored ) )
{
NotifyUserAndForceRedo( "A Track must be a number", newValue );
}
else
if ( Int32::Parse( newValue->FormattedValue->ToString() ) < 1 )
{
NotifyUserAndForceRedo( "Not a valid track", newValue );
editedLastColumn = true;
}
}
void NotifyUserAndForceRedo( String^ errorMessage, DataGridViewCellValidatingEventArgs^ newValue )
{
MessageBox::Show( errorMessage );
newValue->Cancel = true;
}
void CheckDate( DataGridViewCellValidatingEventArgs^ newValue )
{
try
{
DateTime::Parse( newValue->FormattedValue->ToString() ).ToLongDateString();
AnnotateCell( String::Empty, newValue );
}
catch ( FormatException^ /*ex*/ )
{
AnnotateCell( "You did not enter a valid date.", newValue );
}
}
void AnnotateCell( String^ errorMessage, DataGridViewCellValidatingEventArgs^ editEvent )
{
DataGridViewCell^ cell = dataGridView1->Rows[ editEvent->RowIndex ]->Cells[ editEvent->ColumnIndex ];
cell->ErrorText = errorMessage;
}
private void dataGridView1_CellValidating(object sender, DataGridViewCellValidatingEventArgs e)
{
DataGridViewColumn column = dataGridView1.Columns[e.ColumnIndex];
if (column.Name == "Track")
{
CheckTrack(e);
}
else if (column.Name == "Release Date")
{
CheckDate(e);
}
}
private static void CheckTrack(DataGridViewCellValidatingEventArgs newValue)
{
Int32 ignored = new Int32();
if (String.IsNullOrEmpty(newValue.FormattedValue.ToString()))
{
NotifyUserAndForceRedo("Please enter a track", newValue);
}
else if (!Int32.TryParse(newValue.FormattedValue.ToString(), out ignored))
{
NotifyUserAndForceRedo("A Track must be a number", newValue);
}
else if (Int32.Parse(newValue.FormattedValue.ToString()) < 1)
{
NotifyUserAndForceRedo("Not a valid track", newValue);
}
}
private static void NotifyUserAndForceRedo(string errorMessage, DataGridViewCellValidatingEventArgs newValue)
{
MessageBox.Show(errorMessage);
newValue.Cancel = true;
}
private void CheckDate(DataGridViewCellValidatingEventArgs newValue)
{
try
{
DateTime.Parse(newValue.FormattedValue.ToString()).ToLongDateString();
AnnotateCell(String.Empty, newValue);
}
catch (FormatException)
{
AnnotateCell("You did not enter a valid date.", newValue);
}
}
private void AnnotateCell(string errorMessage, DataGridViewCellValidatingEventArgs editEvent)
{
DataGridViewCell cell = dataGridView1.Rows[editEvent.RowIndex].Cells[editEvent.ColumnIndex];
cell.ErrorText = errorMessage;
}
Private Sub dataGridView1_CellValidating(ByVal sender As Object, _
ByVal e As _
DataGridViewCellValidatingEventArgs) _
Handles dataGridView1.CellValidating
Dim column As DataGridViewColumn = _
dataGridView1.Columns(e.ColumnIndex)
If column.Name = "Track" Then
CheckTrack(e)
ElseIf column.Name = "Release Date" Then
CheckDate(e)
End If
End Sub
Private Shared Sub CheckTrack(ByVal newValue As DataGridViewCellValidatingEventArgs)
If String.IsNullOrEmpty(newValue.FormattedValue.ToString()) Then
NotifyUserAndForceRedo("Please enter a track", newValue)
ElseIf Not Integer.TryParse( _
newValue.FormattedValue.ToString(), New Integer()) Then
NotifyUserAndForceRedo("A Track must be a number", newValue)
ElseIf Integer.Parse(newValue.FormattedValue.ToString()) < 1 Then
NotifyUserAndForceRedo("Not a valid track", newValue)
End If
End Sub
Private Shared Sub NotifyUserAndForceRedo(ByVal errorMessage As String, ByVal newValue As DataGridViewCellValidatingEventArgs)
MessageBox.Show(errorMessage)
newValue.Cancel = True
End Sub
Private Sub CheckDate(ByVal newValue As DataGridViewCellValidatingEventArgs)
Try
DateTime.Parse(newValue.FormattedValue.ToString()).ToLongDateString()
AnnotateCell(String.Empty, newValue)
Catch ex As FormatException
AnnotateCell("You did not enter a valid date.", newValue)
End Try
End Sub
Private Sub AnnotateCell(ByVal errorMessage As String, _
ByVal editEvent As DataGridViewCellValidatingEventArgs)
Dim cell As DataGridViewCell = _
dataGridView1.Rows(editEvent.RowIndex).Cells( _
editEvent.ColumnIndex)
cell.ErrorText = errorMessage
End Sub
Hinweise
In der Regel wird die ErrorText -Eigenschaft verwendet, wenn das CellValidating -Ereignis von DataGridViewbehandelt wird. Wenn für den Wert der Zelle einige Validierungskriterien fehlschlagen, legen Sie die ErrorText -Eigenschaft fest, und brechen Sie den Commitvorgang ab, indem Sie die Cancel -Eigenschaft von DataGridViewCellValidatingEventArgs auf true
festlegen. Der von Ihnen angegebene Text wird dann von DataGridViewangezeigt, und der Benutzer wird aufgefordert, den Fehler in den Daten der Zelle zu beheben.
Wenn die VirtualMode -Eigenschaft von DataGridView ist true
, können Sie Fehlertext für Zeilen und Zellen mithilfe der RowErrorTextNeeded Ereignisse und CellErrorTextNeeded angeben.
Wenn Sie einer Zelle eine andere ErrorText Zeichenfolge zuweisen, wird das CellErrorTextChanged -Ereignis des DataGridView Steuerelements ausgelöst.
Ab dem .NET Framework 4.5.2 wird die Größenänderung des Fehlersymbols durch die Dpi-Einstellung des Systems bestimmt, wenn die datei app.config den folgenden Eintrag enthält:
<appSettings>
<add key="EnableWindowsFormsHighDpiAutoResizing" value="true" />
</appSettings>