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;
public event System.Windows.Forms.LabelEditEventHandler? AfterLabelEdit;
member this.AfterLabelEdit : System.Windows.Forms.LabelEditEventHandler 
Public Custom Event AfterLabelEdit As LabelEditEventHandler 

Type d'événement

Exemples

L’exemple de code suivant montre comment utiliser l’événement AfterLabelEdit pour limiter une étiquette nouvellement 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 situe entre les codes ASCII qui représentent des nombres, la nouvelle étiquette ne peut pas être appliquée à l’élément. Cet exemple nécessite que vous ayez créé un ListView contrôle sur un formulaire et que vous y ajoutiez des éléments. L’exemple nécessite également que vous ayez connecté l’événement AfterLabelEdit au gestionnaire d’événements défini dans l’exemple de code. Pour pouvoir utiliser la ASCIIEncoding classe , votre fichier doit inclure l’espace de System.Text 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’événement AfterLabelEdit se produit lorsque l’utilisateur a fini 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 revient au texte tel qu’il était avant que l’utilisateur commence à modifier l’élément.

Notes

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

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

Vous pouvez créer un gestionnaire d’événements pour que l’événement BeforeLabelEdit effectue 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