ListView.AfterLabelEdit Événement

Définition

Se produit lorsque l'utilisateur modifie l'étiquette d'un élément.

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 

Type d'événement

LabelEditEventHandler

Exemples

L’exemple de code suivant montre comment utiliser l' AfterLabelEdit événement pour limiter une étiquette récemment modifiée aux caractères de l’alphabet. L’exemple utilise la ASCIIEncoding classe pour obtenir le code de caractère ASCII de chaque caractère de la nouvelle étiquette. Si le caractère se trouve entre les codes ASCII qui représentent des nombres, la nouvelle étiquette ne peut pas être appliquée à l’élément. Cet exemple suppose que vous avez créé un ListView contrôle dans un formulaire et que vous y avez ajouté des éléments. L’exemple requiert également que vous ayez connecté l' AfterLabelEdit événement au gestionnaire d’événements défini dans l’exemple de code. Pour pouvoir utiliser la ASCIIEncoding classe, votre fichier doit inclure l' System.Text espace de noms.

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

Remarques

L' AfterLabelEdit événement se produit lorsque l’utilisateur a terminé de modifier le texte d’un élément. La nouvelle chaîne que l’utilisateur tape pour l’élément est passée à l’événement, et le gestionnaire d’événements peut rejeter la modification. Si le gestionnaire d’événements rejette la modification, le texte est rétabli dans le texte tel qu’il était avant le début de la modification de l’élément par l’utilisateur.

Notes

Étant donné que l' ListView.AfterLabelEdit événement a lieu avant la validation de la modification de l’étiquette, l’appel de la ListView.Sort méthode dans un gestionnaire pour cet événement permet de trier l’élément à l’aide de la valeur d’origine.

Pour que l' AfterLabelEdit événement soit déclenché, la LabelEdit propriété du ListView contrôle doit avoir la valeur true .

Vous pouvez créer un gestionnaire d’événements pour l' BeforeLabelEdit événement afin d’effectuer des tâches avant que l’utilisateur modifie le texte d’un élément.

Pour plus d'informations sur la gestion des événements, voir gestion et déclenchement d’événements.

S’applique à

Voir aussi