Questa documentazione è stata archiviata e non viene gestita.

Evento ListView.AfterLabelEdit

Aggiornamento: novembre 2007

Si verifica quando l'etichetta di un elemento viene modificata dall'utente.

Spazio dei nomi:  System.Windows.Forms
Assembly:  System.Windows.Forms (in System.Windows.Forms.dll)

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

JScript non supporta gli eventi.

L'evento AfterLabelEdit si verifica quando l'utente termina la modifica del testo di un elemento. La nuova stringa digitata dall'utente per l'elemento viene passata all'evento e il gestore eventi può rifiutare la modifica. In questo caso, viene ripristinato il testo esistente prima dell'inizio della modifica dell'elemento da parte dell'utente.

Nota:

Dato che l'evento ListView.AfterLabelEdit ha luogo prima del commit della modifica dell'etichetta, la chiamata al metodo ListView.Sort in un gestore per questo evento consentirà di ordinare l'elemento con il valore originale.

Affinché l'evento AfterLabelEdit venga generato, è necessario che la proprietà LabelEdit del controllo ListView sia impostata su true.

È possibile creare un gestore eventi per l'evento BeforeLabelEdit per eseguire delle attività prima che l'utente modifichi il testo di un elemento.

Per ulteriori informazioni sulla gestione di eventi, vedere Utilizzo degli eventi.

Nell'esempio di codice riportato di seguito viene illustrato l'utilizzo dell'evento AfterLabelEdit per limitare ai soli caratteri dell'alfabeto una nuova etichetta. Viene utilizzata la classe ASCIIEncoding per ottenere il codice di carattere ASCII relativo a ciascun carattere della nuova etichetta. Se il carattere rientra tra i codici ASCII che rappresentano numeri, la nuova etichetta non potrà essere applicata all'elemento. Per eseguire questo esempio è necessario che su un form sia stato creato un controllo ListView a cui siano stati aggiunti elementi. Si presuppone inoltre che l'evento AfterLabelEdit sia stato collegato al gestore eventi definito nel codice. Per utilizzare la classe ASCIIEncoding è necessario che nel file sia incluso lo spazio dei nomi 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 Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition , Windows XP Starter Edition, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework e .NET Compact Framework non supportano tutte le versioni di ciascuna piattaforma. Per un elenco delle versioni supportate, vedere Requisiti di sistema di .NET Framework.

.NET Framework

Supportato in: 3.5, 3.0, 2.0, 1.1, 1.0
Mostra: