ListView.AfterLabelEdit Olay

Tanım

Bir öğenin etiketi kullanıcı tarafından düzenlendiğinde gerçekleşir.

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 

Olay Türü

Örnekler

Aşağıdaki kod örneği, yeni düzenlenmiş bir etiketi alfabedeki AfterLabelEdit karakterlerle kısıtlamak için olayının nasıl kullanılacağını gösterir. Örnek, yeni etiketin ASCIIEncoding her karakterinin ASCII karakter kodunu almak için sınıfını kullanır. Karakter sayıları temsil eden ASCII kodları arasında kalırsa, yeni etiket öğeye uygulanamaz. Bu örnek, formda bir ListView denetim oluşturup bu denetime öğe eklemenizi gerektirir. Örnek, olayı örnek kodda tanımlanan olay işleyicisine bağlamanızı AfterLabelEdit da gerektirir. sınıfını ASCIIEncoding kullanmak için dosyanızın ad alanını içermesi System.Text gerekir.

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

Açıklamalar

Olay, AfterLabelEdit kullanıcı bir öğenin metnini değiştirmeyi bitirdiğinde gerçekleşir. Kullanıcının öğe için yaptığı yeni dize olaya geçirilir ve olay işleyicisi değişikliği reddedebilir. Olay işleyicisi değişikliği reddederse, metin kullanıcı öğeyi düzenlemeye başlamadan önceki haliyle metne geri döner.

Not

ListView.AfterLabelEdit Etiket düzenlemesi işlenmeden önce olay gerçekleştiğinden, bu olay için işleyicide yönteminin çağrılması ListView.Sort öğeyi özgün değeri kullanarak sıralar.

Olayın tetiklenmesi için AfterLabelEdit denetimin LabelEditListView özelliği olarak trueayarlanmalıdır.

Kullanıcı bir öğenin metnini düzenlemeden önce görevleri gerçekleştirmek üzere olay için BeforeLabelEdit bir olay işleyicisi oluşturabilirsiniz.

Olayları işleme hakkında daha fazla bilgi için bkz. Olayları İşleme ve Oluşturma.

Şunlara uygulanır

Ayrıca bkz.