Binding.Format Evento

Definición

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

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 

Tipo de evento

Ejemplos

En el BindingsCollection ejemplo de código siguiente se crea un Binding, se agrega un ConvertEventHandler delegado a los Parse eventos y Format y se agrega Binding al objeto de un TextBox control a través de la DataBindings propiedad . El DecimalToCurrencyString delegado de eventos, agregado al Format evento, da formato al valor enlazado (un Decimal tipo) como moneda mediante el ToString método . El CurrencyStringToDecimal delegado de eventos, agregado al Parse evento, convierte el valor mostrado por el control de nuevo en el Decimal tipo.

En este ejemplo se supone la presencia de un DataSet objeto denominado 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

Comentarios

El Format evento se genera cuando los datos se insertan desde el origen de datos en el control . Puede controlar el Format evento para convertir datos sin formato del origen de datos en datos con formato para su presentación. Cuando los datos se extraen del control en el origen de datos, el Parse evento se genera para anular el formato del valor mostrado y, a continuación, el Format evento tiene lugar para volver a formatear los datos para su presentación. Esto garantiza que el control enlazado muestre los datos con formato correcto independientemente de si el usuario escribe datos con formato o sin formato en el control.

Los Format eventos y Parse permiten crear formatos personalizados para mostrar datos. Por ejemplo, si los datos de una tabla son de tipo Decimal, puede mostrar los datos en el formato de moneda local estableciendo la Value propiedad de ConvertEventArgs en el valor con formato en el Format evento. Por lo tanto, debe anular el formato del valor mostrado en el Parse evento .

El Format evento se produce cada vez que cambia el Current valor de , BindingManagerBase lo que incluye:

  • La primera vez que la propiedad está enlazada.

  • Cada vez que cambie.Position

  • Cada vez que la lista enlazada a datos se ordena o filtra, lo que se logra cuando proporciona DataView la lista.

El Format evento también se produce después del Parse evento . Por ejemplo, cuando un control pierde el foco, se analiza su contenido. Inmediatamente después, a medida que se insertan nuevos datos en el control, el Format evento se produce permitiendo que se dé formato al nuevo contenido.

Para obtener más información sobre el manejo de eventos, consulte controlar y provocar eventos.

Se aplica a

Consulte también