Exporter (0) Imprimer
Développer tout

Binding.Format, événement

Mise à jour : novembre 2007

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

Espace de noms :  System.Windows.Forms
Assembly :  System.Windows.Forms (dans System.Windows.Forms.dll)

public event ConvertEventHandler Format
/** @event */
public void add_Format (ConvertEventHandler value)
/** @event */
public void remove_Format (ConvertEventHandler value)

JScript ne prend pas en charge les événements.

L'événement Format se déclenche lorsque des données font l'objet d'un push de la source de données vers 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 pour l'affichage. Lorsque des données sont extraites du contrôle dans la source de données, l'événement Parse se déclenche pour annuler la mise en forme de la valeur affichée, alors l'événement Format se produit pour remettre en forme les données pour l'affichage. Cela garantit que le contrôle lié affiche correctement des données mises en forme, que l'utilisateur entre des données mises en forme ou non dans le contrôle.

Les événements Format et Parse vous permettent de créer des formats personnalisés pour afficher des données. Par exemple, si les données figurant dans une table sont de type Decimal, vous pouvez afficher les données dans un format monétaire local en affectant à la propriété Value du ConvertEventArgs la valeur mise en forme dans l'événement Format. Par conséquent, vous devez 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 valeur Current de BindingManagerBase est modifiée, à savoir :

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

  • Chaque fois que Position est modifié.

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

L'événement Format se produit également après l'événement Parse. Par exemple, quand un contrôle perd le focus, son contenu est analysé. Immédiatement après, lorsque de nouvelles données font l'objet d'un push dans le contrôle, l'événement Format se produit, ce qui permet de formater le nouveau contenu.

Pour plus d'informations sur la gestion des événements, consultez Consommation d'événements.

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

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 void DecimalToCurrencyString(Object sender, ConvertEventArgs cevent)
{
    // The method converts only to string type. Test this using 
    // the DesiredType.
    if (!cevent.get_DesiredType().Equals(String.class.ToType())) {
        return;
    }
    // Use the ToString method to format the value as currency ("c").
    cevent.set_Value(((System.Decimal)(cevent.get_Value())).ToString("c"));
} //DecimalToCurrencyString

private void CurrencyStringToDecimal(Object sender, ConvertEventArgs cevent)
{
    // The method converts back to decimal type only. 
    if (!cevent.get_DesiredType().Equals(System.Decimal.class.ToType())) {
        return;
    }
    // Converts the string back to decimal using the static Parse method.
    cevent.set_Value(Decimal.Parse(cevent.get_Value().ToString(), 
        NumberStyles.Currency, null));
} //CurrencyStringToDecimal

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.add_Format(new ConvertEventHandler(DecimalToCurrencyString));
    b.add_Parse(new ConvertEventHandler(CurrencyStringToDecimal));
    text1.get_DataBindings().Add(b);
} //BindControl


private function DecimalToCurrencyString(sender, cevent : ConvertEventArgs)
{
   // The method converts only to string type. Test this using the DesiredType.
   if(cevent.DesiredType != String.GetType()) return;

   cevent.Value = (Decimal(cevent.Value)).ToString("c"); 
}

private function CurrencyStringToDecimal(sender, cevent : ConvertEventArgs)
{
   // The method converts only to decimal type. 
   if(cevent.DesiredType != Decimal.GetType()) return;

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

private function BindControl()
{
   // Creates the binding first. The OrderAmount is a Decimal type.
   var b : Binding = new Binding
      ("Text", ds, "Suppliers.CompanyName");
   // Add the delegates to the event.
   b.add_Format(DecimalToCurrencyString);
   b.add_Parse(CurrencyStringToDecimal);
   text1.DataBindings.Add(b);
}



Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professionnel Édition x64, Windows XP Starter Edition, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Windows CE, Windows Mobile pour Smartphone, Windows Mobile pour Pocket PC

Le .NET Framework et le .NET Compact Framework ne prennent pas en charge toutes les versions de chaque plateforme. Pour obtenir la liste des versions prises en charge, consultez Configuration requise du .NET Framework.

.NET Framework

Pris en charge dans : 3.5, 3.0, 2.0, 1.1, 1.0

.NET Compact Framework

Pris en charge dans : 3.5, 2.0, 1.0

Ajouts de la communauté

AJOUTER
Afficher:
© 2015 Microsoft