Binding.Format Événement

Définition

Se produit lorsque la propriété du contrôle est liée à une valeur de données.

public:
 event System::Windows::Forms::ConvertEventHandler ^ Format;
public event System.Windows.Forms.ConvertEventHandler Format;
public event System.Windows.Forms.ConvertEventHandler? Format;
member this.Format : System.Windows.Forms.ConvertEventHandler 
Public Custom Event Format As ConvertEventHandler 

Type d'événement

Exemples

L’exemple de code suivant crée un Binding, ajoute un ConvertEventHandler délégué à la fois aux Parse événements et Format , et ajoute le Binding au BindingsCollection d’un TextBox contrôle via la DataBindings propriété . Le DecimalToCurrencyString délégué d’événement, ajouté à l’événement Format , met en forme la valeur liée (un Decimal type) en tant que devise à l’aide de la ToString méthode . Le CurrencyStringToDecimal délégué d’événement, ajouté à l’événement Parse , reconvertit la valeur affichée par le contrôle en Decimal type.

Cet exemple suppose la présence d’un DataSet nommé ds.

private:
   void DecimalToCurrencyString( Object^ /*sender*/, ConvertEventArgs^ cevent )
   {
      // The method converts only to string type. Test this using the DesiredType.
      if ( cevent->DesiredType != String::typeid )
      {
         return;
      }
      
      // Use the ToString method to format the value as currency ("c").
      cevent->Value = ( (Decimal)(cevent->Value) ).ToString( "c" );
   }

   void CurrencyStringToDecimal( Object^ /*sender*/, ConvertEventArgs^ cevent )
   {
      // The method converts back to decimal type only. 
      if ( cevent->DesiredType != Decimal::typeid )
      {
         return;
      }
      
      // Converts the string back to decimal using the static Parse method.
      cevent->Value = Decimal::Parse( cevent->Value->ToString(),
         NumberStyles::Currency, nullptr );
   }

   void BindControl()
   {
      // Creates the binding first. The OrderAmount is a Decimal type.
      Binding^ b = gcnew Binding(
         "Text",ds,"customers.custToOrders.OrderAmount" );
      
      // Add the delegates to the event.
      b->Format += gcnew ConvertEventHandler( this, &Form1::DecimalToCurrencyString );
      b->Parse += gcnew ConvertEventHandler( this, &Form1::CurrencyStringToDecimal );
      text1->DataBindings->Add( b );
   }
private void DecimalToCurrencyString(object sender, ConvertEventArgs cevent)
{
   // The method converts only to string type. Test this using the DesiredType.
   if(cevent.DesiredType != typeof(string)) return;

   // Use the ToString method to format the value as currency ("c").
   cevent.Value = ((decimal) cevent.Value).ToString("c");
}

private void CurrencyStringToDecimal(object sender, ConvertEventArgs cevent)
{
   // The method converts back to decimal type only. 
   if(cevent.DesiredType != typeof(decimal)) return;

   // Converts the string back to decimal using the static Parse method.
   cevent.Value = Decimal.Parse(cevent.Value.ToString(),
   NumberStyles.Currency, null);
}

private void BindControl()
{
   // Creates the binding first. The OrderAmount is a Decimal type.
   Binding b = new Binding
      ("Text", ds, "customers.custToOrders.OrderAmount");
   // Add the delegates to the event.
   b.Format += new ConvertEventHandler(DecimalToCurrencyString);
   b.Parse += new ConvertEventHandler(CurrencyStringToDecimal);
   text1.DataBindings.Add(b);
}
Private Sub DecimalToCurrencyString(sender As Object, cevent As _
ConvertEventArgs)
   ' The method converts only to string type. Test this using the DesiredType.
   If cevent.DesiredType IsNot GetType(String) Then
      Exit Sub
   End If

   ' Use the ToString method to format the value as currency ("c").
   cevent.Value = CType(cevent.Value, Decimal).ToString("c")
End Sub

Private Sub CurrencyStringToDecimal(sender As Object, cevent As _
ConvertEventArgs)
   ' The method converts back to decimal type only.
   If cevent.DesiredType IsNot GetType(Decimal) Then
      Exit Sub
   End If

   ' Converts the string back to decimal using the static ToDecimal method.
   cevent.Value = Decimal.Parse(cevent.Value.ToString, _
   NumberStyles.Currency, nothing)
End Sub

Private Sub BindControl
   ' Creates the binding first. The OrderAmount is a Decimal type.
   Dim b As Binding = New Binding _
      ("Text", ds, "customers.custToOrders.OrderAmount")
   ' Add the delegates to the event
   AddHandler b.Format, AddressOf DecimalToCurrencyString
   AddHandler b.Parse, AddressOf CurrencyStringToDecimal
   text1.DataBindings.Add(b)
End Sub

Remarques

L’événement Format est déclenché lorsque des données sont envoyées (push) de la source de données dans le contrôle. Vous pouvez gérer l’événement Format pour convertir des données non mises en forme de la source de données en données mises en forme à des fins d’affichage. Lorsque des données sont extraites du contrôle dans la source de données, l’événement Parse est déclenché pour annuler la mise en forme de la valeur affichée, puis l’événement Format se produit pour reformater les données pour les afficher. Cela garantit que le contrôle lié affiche correctement les données mises en forme, que l’utilisateur entre des données mises en forme ou non dans le contrôle.

Les Format événements et Parse vous permettent de créer des formats personnalisés pour l’affichage des données. Par exemple, si les données d’une table sont de type Decimal, vous pouvez afficher les données dans le format monétaire local en définissant la Value propriété de sur ConvertEventArgs la valeur mise en forme dans l’événement Format . Vous devez donc annuler la mise en forme de la valeur affichée dans l’événement Parse .

L’événement Format se produit chaque fois que la Current valeur du BindingManagerBase change, ce qui inclut :

  • La première fois que la propriété est liée.

  • Chaque fois que le change Position .

  • Chaque fois que la liste liée aux données est triée ou filtrée, ce qui est effectué quand un DataView fournit la liste.

L’événement Format se produit également après l’événement Parse . Par exemple, lorsqu’un contrôle perd le focus, son contenu est analysé. Immédiatement après, lorsque de nouvelles données sont envoyées au contrôle, l’événement Format se produit, ce qui permet au nouveau contenu d’être mis en forme.

Pour plus d'informations sur la gestion des événements, voir gestion et déclenchement d’événements.

S’applique à

Voir aussi