ListView.AfterLabelEdit Ereignis
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.
Tritt ein, wenn die Bezeichnung eines Elements vom Benutzer bearbeitet wird.
public:
event System::Windows::Forms::LabelEditEventHandler ^ AfterLabelEdit;
public event System.Windows.Forms.LabelEditEventHandler AfterLabelEdit;
public event System.Windows.Forms.LabelEditEventHandler? AfterLabelEdit;
member this.AfterLabelEdit : System.Windows.Forms.LabelEditEventHandler
Public Custom Event AfterLabelEdit As LabelEditEventHandler
Ereignistyp
Beispiele
Im folgenden Codebeispiel wird veranschaulicht, wie das AfterLabelEdit -Ereignis verwendet wird, um eine neu bearbeitete Bezeichnung auf Zeichen im Alphabet einzuschränken. Im Beispiel wird die ASCIIEncoding -Klasse verwendet, um den ASCII-Zeichencode jedes Zeichens der neuen Bezeichnung abzurufen. Wenn das Zeichen zwischen die ASCII-Codes fällt, die Zahlen darstellen, kann die neue Bezeichnung nicht auf das Element angewendet werden. In diesem Beispiel müssen Sie ein ListView Steuerelement in einem Formular erstellt und diesem Elemente hinzugefügt haben. Das Beispiel erfordert auch, dass Sie das Ereignis mit dem AfterLabelEdit im Beispielcode definierten Ereignishandler verbunden haben. Um die ASCIIEncoding -Klasse verwenden zu können, muss Ihre Datei den System.Text Namespace enthalten.
private:
void MyListView_AfterLabelEdit( Object^ /*sender*/, System::Windows::Forms::LabelEditEventArgs^ e )
{
// Determine if label is changed by checking for 0.
if ( e->Label == nullptr )
return;
// ASCIIEncoding is used to determine if a number character has been entered.
ASCIIEncoding^ AE = gcnew ASCIIEncoding;
// Convert the new label to a character array.
array<Char>^temp = e->Label->ToCharArray();
// Check each character in the new label to determine if it is a number.
for ( int x = 0; x < temp->Length; x++ )
{
// Encode the character from the character array to its ASCII code.
array<Byte>^bc = AE->GetBytes( temp[ x ].ToString() );
// Determine if the ASCII code is within the valid range of numerical values.
if ( bc[ 0 ] > 47 && bc[ 0 ] < 58 )
{
// Cancel the event and return the lable to its original state.
e->CancelEdit = true;
// Display a MessageBox alerting the user that numbers are not allowed.
MessageBox::Show( "The text for the item cannot contain numerical values." );
// Break out of the loop and exit.
return;
}
}
}
private void MyListView_AfterLabelEdit(object sender, System.Windows.Forms.LabelEditEventArgs e)
{
// Determine if label is changed by checking for null.
if (e.Label == null)
return;
// ASCIIEncoding is used to determine if a number character has been entered.
ASCIIEncoding AE = new ASCIIEncoding();
// Convert the new label to a character array.
char[] temp = e.Label.ToCharArray();
// Check each character in the new label to determine if it is a number.
for(int x=0; x < temp.Length; x++)
{
// Encode the character from the character array to its ASCII code.
byte[] bc = AE.GetBytes(temp[x].ToString());
// Determine if the ASCII code is within the valid range of numerical values.
if(bc[0] > 47 && bc[0] < 58)
{
// Cancel the event and return the lable to its original state.
e.CancelEdit = true;
// Display a MessageBox alerting the user that numbers are not allowed.
MessageBox.Show ("The text for the item cannot contain numerical values.");
// Break out of the loop and exit.
return;
}
}
}
Private Sub MyListView_AfterLabelEdit(ByVal sender As Object, ByVal e As System.Windows.Forms.LabelEditEventArgs) Handles listView1.AfterLabelEdit
' Determine if label is changed by checking to see if it is equal to Nothing.
If e.Label Is Nothing Then
Return
End If
' ASCIIEncoding is used to determine if a number character has been entered.
Dim AE As New ASCIIEncoding()
' Convert the new label to a character array.
Dim temp As Char() = e.Label.ToCharArray()
' Check each character in the new label to determine if it is a number.
Dim x As Integer
For x = 0 To temp.Length - 1
' Encode the character from the character array to its ASCII code.
Dim bc As Byte() = AE.GetBytes(temp(x).ToString())
' Determine if the ASCII code is within the valid range of numerical values.
If bc(0) > 47 And bc(0) < 58 Then
' Cancel the event and return the lable to its original state.
e.CancelEdit = True
' Display a MessageBox alerting the user that numbers are not allowed.
MessageBox.Show("The text for the item cannot contain numerical values.")
' Break out of the loop and exit.
Return
End If
Next x
End Sub
Hinweise
Das AfterLabelEdit Ereignis tritt auf, wenn der Benutzer die Änderung des Texts für ein Element abgeschlossen hat. Die neue Zeichenfolge, die der Benutzer für das Element eingibt, wird an das Ereignis übergeben, und der Ereignishandler kann die Änderung ablehnen. Wenn der Ereignishandler die Änderung ablehnt, wird der Text wiederhergestellt, bevor der Benutzer mit der Bearbeitung des Elements begonnen hat.
Hinweis
Da das ListView.AfterLabelEdit Ereignis stattfindet, bevor die Bezeichnungsbearbeitung committet wird, wird das Element beim Aufrufen der ListView.Sort -Methode in einem Handler für dieses Ereignis anhand des ursprünglichen Werts sortiert.
Damit das AfterLabelEdit Ereignis ausgelöst wird, muss die LabelEdit -Eigenschaft des ListView -Steuerelements auf true
festgelegt werden.
Sie können einen Ereignishandler für das BeforeLabelEdit Ereignis erstellen, um Aufgaben auszuführen, bevor der Benutzer den Text eines Elements bearbeitet.
Weitere Informationen zur Behandlung von Ereignissen finden Sie unter behandeln und Auslösen von Ereignissen.