Esta documentación está archivada y no tiene mantenimiento.

Binding.Format (Evento)

Se produce cuando la propiedad de un control está enlazada a un valor de datos.

Espacio de nombres: System.Windows.Forms
Ensamblado: System.Windows.Forms (en system.windows.forms.dll)

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

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

En JScript, se pueden controlar los eventos que define una clase, pero no se pueden definir unos propios.
No aplicable.

El evento Format se produce cuando se insertan datos en el control desde el origen de datos. Se puede controlar el evento Format para convertir los datos sin formato del origen de datos en datos con formato que se van a mostrar. Cuando se extraen datos del control al origen de datos, se produce el evento Parse para quitar el formato del valor mostrado. A continuación, se produce el evento Format para volver a aplicar formato a los datos que se van a mostrar. De este modo se garantiza que el control enlazado muestra correctamente los datos con formato, independientemente de que el usuario inserte datos con formato o sin formato en el control.

Los eventos Format y Parse permiten crear formatos personalizados para mostrar los datos. Por ejemplo, si los datos de una tabla son de tipo Decimal, puede mostrarlos en formato de moneda local si establece la propiedad Value de ConvertEventArgs en el valor con formato en el evento Format. Por consiguiente, se debe quitar el formato del valor que se muestra en el evento Parse.

El evento Format se produce siempre que cambia el valor Current de BindingManagerBase, que puede ser:

  • La primera vez que se establece un enlace con la propiedad.

  • Siempre que Position cambie.

  • Siempre que se ordene o se filtre la lista con enlace a datos, que sucede cuando un objeto DataView proporciona la lista.

El evento Format también se produce después del evento Parse. Por ejemplo, cuando un control pierde el foco, su contenido se analiza. Justo después, cuando se insertan en el control nuevos datos, se produce el evento Format para permitir que se aplique formato al nuevo contenido.

Para obtener más información sobre la forma de controlar eventos, vea Utilizar eventos.

En el siguiente ejemplo de código se crea un objeto Binding, se agrega un delegado ConvertEventHandler a los eventos Parse y Format, y se agrega el objeto Binding a la colección BindingsCollection de un control TextBox mediante la propiedad DataBindings. El delegado de evento DecimalToCurrencyString, agregado al evento Format, da formato al valor enlazado (un tipo Decimal) como moneda mediante el método ToString. El delegado de evento CurrencyStringToDecimal, agregado al evento Parse, convierte de nuevo el valor mostrado por el control al tipo 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 98, Windows 2000 Service Pack 4, Windows CE, Windows Millennium, Windows Mobile para Pocket PC, Windows Mobile para Smartphone, Windows Server 2003, Windows XP Media Center, Windows XP Professional x64, Windows XP SP2, Windows XP Starter

Microsoft .NET Framework 3.0 es compatible con Windows Vista, Microsoft Windows XP SP2 y Windows Server 2003 SP1.

.NET Framework

Compatible con: 3.0, 2.0, 1.1, 1.0

.NET Compact Framework

Compatible con: 2.0, 1.0
Mostrar: