ListView.AfterLabelEdit Händelse

Definition

Inträffar när etiketten för ett objekt redigeras av användaren.

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 

Händelsetyp

Exempel

Följande kodexempel visar hur du använder AfterLabelEdit händelsen för att begränsa en nyligen redigerad etikett till tecken i alfabetet. I exemplet används ASCIIEncoding klassen för att hämta ASCII-teckenkoden för varje tecken i den nya etiketten. Om tecknet hamnar mellan DE ASCII-koder som representerar tal kan den nya etiketten inte tillämpas på objektet. Det här exemplet kräver att du har skapat en ListView kontroll i ett formulär och lagt till objekt i det. Exemplet kräver också att du har anslutit AfterLabelEdit händelsen till händelsehanteraren som definierats i exempelkoden. För att kunna använda ASCIIEncoding klassen måste filen innehålla System.Text namnområdet.

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

Kommentarer

Händelsen AfterLabelEdit inträffar när användaren har slutfört ändringen av texten för ett objekt. Den nya strängen som användaren skriver för objektet skickas till händelsen och händelsehanteraren kan avvisa ändringen. Om händelsehanteraren avvisar ändringen återgår texten till texten som den var innan användaren började redigera objektet.

Note

Eftersom händelsen ListView.AfterLabelEdit äger rum innan etikettredigeringen checkas in sorteras objektet med det ursprungliga värdet genom att anropa ListView.Sort metoden i en hanterare för den här händelsen.

För AfterLabelEdit att händelsen ska kunna aktiveras LabelEdit måste kontrollens ListView egenskap anges till true.

Du kan skapa en händelsehanterare för händelsen för BeforeLabelEdit att utföra uppgifter innan användaren redigerar texten i ett objekt.

Mer information om hur du hanterar händelser finns i Hantera och höja händelser.

Gäller för

Se även