ListView.AfterLabelEdit Evento

Definición

Se produce cuando el usuario edita la etiqueta de un elemento.Occurs when the label for an item is edited by the user.

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 

Ejemplos

En el ejemplo de código siguiente se muestra cómo usar el evento AfterLabelEdit para restringir una etiqueta recién editada a caracteres del alfabeto.The following code example demonstrates how to use the AfterLabelEdit event to restrict a newly edited label to characters in the alphabet. En el ejemplo se utiliza la clase ASCIIEncoding para obtener el código de carácter ASCII de cada carácter de la nueva etiqueta.The example uses the ASCIIEncoding class to obtain the ASCII character code of each character of the new label. Si el carácter se encuentra entre los códigos ASCII que representan números, la nueva etiqueta no se puede aplicar al elemento.If the character falls between the ASCII codes that represent numbers, the new label cannot be applied to the item. En este ejemplo, es necesario crear un control de ListView en un formulario y agregarle elementos.This example requires that you have created a ListView control on a form and added items to it. En el ejemplo también se requiere que haya conectado el evento AfterLabelEdit al controlador de eventos definido en el código de ejemplo.The example also requires that you have connected the AfterLabelEdit event to the event handler defined in the example code. Para usar la clase ASCIIEncoding, el archivo debe incluir el espacio de nombres System.Text.In order to use the ASCIIEncoding class, your file must include the System.Text namespace.

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

Comentarios

El evento AfterLabelEdit se produce cuando el usuario termina de modificar el texto de un elemento.The AfterLabelEdit event occurs when the user finishes modifying the text for an item. La nueva cadena que el usuario escribe para el elemento se pasa al evento y el controlador de eventos puede rechazar el cambio.The new string that the user types for the item is passed to the event, and the event handler can reject the change. Si el controlador de eventos rechaza el cambio, el texto vuelve al texto tal como estaba antes de que el usuario empezara a editar el elemento.If the event handler rejects the change, the text reverts to the text as it was before the user began editing the item.

Nota

Dado que el evento ListView.AfterLabelEdit tiene lugar antes de que se confirme la edición de la etiqueta, al llamar al método ListView.Sort en un controlador para este evento, se ordenará el elemento con el valor original.Because the ListView.AfterLabelEdit event takes place before the label edit is committed, calling the ListView.Sort method in a handler for this event will sort the item using the original value.

Para que se produzca el evento de AfterLabelEdit, se debe establecer la propiedad LabelEdit del control ListView en true.In order for the AfterLabelEdit event to be raised, the LabelEdit property of the ListView control must be set to true.

Puede crear un controlador de eventos para que el evento BeforeLabelEdit realice tareas antes de que el usuario edite el texto de un elemento.You can create an event handler for the BeforeLabelEdit event to perform tasks before the user edits the text of an item.

Para obtener más información sobre el manejo de eventos, consulte controlar y provocar eventos.For more information about handling events, see Handling and Raising Events.

Se aplica a

Consulte también: