Exportar (0) Imprimir
Expandir todo

ListView.AfterLabelEdit (Evento)

Se produce cuando el usuario edita la etiqueta de un elemento.

Espacio de nombres: System.Windows.Forms
Ensamblado: System.Windows.Forms (en system.windows.forms.dll)

public event LabelEditEventHandler AfterLabelEdit
/** @event */
public void add_AfterLabelEdit (LabelEditEventHandler value)

/** @event */
public void remove_AfterLabelEdit (LabelEditEventHandler value)

En JScript, se pueden controlar los eventos que define una clase, pero no se pueden definir unos propios.
No aplicable.

El evento AfterLabelEdit se produce cuando el usuario termina de modificar el texto de un elemento. La nueva cadena que escribe el usuario para el elemento, se pasa al evento y el controlador de eventos puede rechazar el cambio. Si el controlador de eventos rechaza el cambio, el texto vuelve a ser el que era antes de que el usuario empezara a editar el elemento.

NotaNota:

Dado que el evento ListView.AfterLabelEdit se produce antes de confirmar la edición de la etiqueta, al llamar al método ListView.Sort en un controlador para este evento se ordenará el elemento utilizando el valor original.

Para que se provoque el evento AfterLabelEdit, la propiedad LabelEdit del control ListView debe estar establecida en true.

Se puede crear un controlador de eventos para que el evento BeforeLabelEdit realice tareas antes de que el usuario edite el texto de un elemento.

Para obtener más información sobre la forma de controlar eventos, vea Utilizar eventos.

En el ejemplo de código siguiente se muestra cómo se utiliza el evento AfterLabelEdit para restringir una etiqueta recién editada a los caracteres del alfabeto. En el ejemplo se utiliza la clase ASCIIEncoding para obtener el código de caracteres ASCII de cada uno de los caracteres de la nueva etiqueta. Si el carácter está comprendido dentro de los códigos ASCII que representan números, no se podrá aplicar la nueva etiqueta al elemento. Este ejemplo exige que se haya creado un control ListView en un formulario y que se le hayan agregado elementos. También requiere que el evento AfterLabelEdit se haya conectado al controlador de eventos definido en el código de ejemplo. Para poder utilizar la clase ASCIIEncoding, el archivo debe incluir el espacio de nombres System.Text.

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 void MyListView_AfterLabelEdit(Object sender, 
    System.Windows.Forms.LabelEditEventArgs e)
{
    // Determine if label is changed by checking for null.
    if (e.get_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.get_Label().ToCharArray();

    // Check each character in the new label to determine if it is a number.
    for (int x = 0; x < temp.get_Length(); x++) {
        // Encode the character from the character array to its ASCII code.
        ubyte bc[] = ae.GetBytes(temp.get_Item(x).ToString());

        // Determine if the ASCII code is within the valid range 
        // of numerical values.
        if (Convert.ToInt32(bc.get_Item(0)) > 47 
            && Convert.ToInt32(bc.get_Item(0)) < 58) {
            // Cancel the event and return the lable to its original state.
            e.set_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;
        }
    }
} //MyListView_AfterLabelEdit

Windows 98, Windows 2000 Service Pack 4, Windows CE, Windows Millennium, Windows Mobile para Pocket PC, Windows Mobile para Smartphone, Windows Server 2003, Windows XP Media Center, Windows XP Professional x64, Windows XP SP2, Windows XP Starter

Microsoft .NET Framework 3.0 es compatible con Windows Vista, Microsoft Windows XP SP2 y Windows Server 2003 SP1.

.NET Framework

Compatible con: 3.0, 2.0, 1.1, 1.0
Mostrar:
© 2014 Microsoft