Binding.Format Evento

Definición

Se produce cuando la propiedad de un control está enlazada a un valor de datos.Occurs when the property of a control is bound to a data value.

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 

Ejemplos

En el ejemplo de código siguiente se crea un Binding, se agrega un delegado ConvertEventHandler a los eventos Parse y Format, y se agrega el Binding al BindingsCollection de un control TextBox a través de la propiedad DataBindings.The following code example creates a Binding, adds a ConvertEventHandler delegate to both the Parse and Format events, and adds the Binding to the BindingsCollection of a TextBox control through the DataBindings property. El delegado de eventos DecimalToCurrencyString, que se agrega al evento Format, da formato al valor enlazado (un tipo Decimal) como moneda mediante el método ToString.The DecimalToCurrencyString event delegate, added to the Format event, formats the bound value (a Decimal type) as currency using the ToString method. El delegado de eventos CurrencyStringToDecimal, que se agrega al evento Parse, convierte el valor mostrado por el control de nuevo al tipo Decimal.The CurrencyStringToDecimal event delegate, added to the Parse event, converts the value displayed by the control back to the Decimal type.

En este ejemplo se da por supuesto la presencia de un DataSet denominado ds.This example assumes the presence of a DataSet named 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 evento Format se genera cuando los datos se insertan desde el origen de datos en el control.The Format event is raised when data is pushed from the data source into the control. Puede controlar el evento Format para convertir datos sin formato del origen de datos en datos con formato para mostrarlos.You can handle the Format event to convert unformatted data from the data source into formatted data for display. Cuando los datos se extraen del control en el origen de datos, se genera el evento Parse para quitar el formato del valor mostrado y, a continuación, se produce el evento Format para volver a dar formato a los datos para su presentación.When data is pulled from the control into the data source, the Parse event is raised to unformat the displayed value, then the Format event occurs to reformat the data for display. Esto garantiza que el control enlazado muestre datos con el formato correcto, independientemente de si el usuario escribe datos con formato o sin formato en el control.This ensures that the bound control displays correctly formatted data regardless of whether the user enters formatted or unformatted data in the control.

Los eventos Format y Parse permiten crear formatos personalizados para mostrar los datos.The Format and Parse events allow you to create custom formats for displaying data. Por ejemplo, si los datos de una tabla son del tipo Decimal, puede mostrar los datos en el formato de moneda local estableciendo la propiedad Value del ConvertEventArgs en el valor con formato del evento Format.For example, if the data in a table is of type Decimal, you can display the data in the local currency format by setting the Value property of the ConvertEventArgs to the formatted value in the Format event. En consecuencia, debe desformatear el valor mostrado en el evento Parse.You must consequently unformat the displayed value in the Parse event.

El evento Format se produce siempre que cambia el valor de Current del BindingManagerBase, lo que incluye:The Format event occurs whenever the Current value of the BindingManagerBase changes, which includes:

  • La primera vez que se enlaza la propiedad.The first time the property is bound.

  • Siempre que el Position cambie.Any time the Position changes.

  • Cada vez que la lista enlazada a datos se ordena o filtra, lo que se consigue cuando un DataView proporciona la lista.Whenever the data-bound list is sorted or filtered, which is accomplished when a DataView supplies the list.

El evento Format también se produce después del evento Parse.The Format event also occurs after the Parse event. Por ejemplo, cuando un control pierde el foco, se analiza su contenido.For example, when a control loses focus, its contents are parsed. Inmediatamente después, a medida que se insertan nuevos datos en el control, se produce el evento Format, lo que permite dar formato al nuevo contenido.Immediately afterward, as new data is pushed into the control, the Format event occurs allowing the new contents to be formatted.

Para obtener más información sobre el manejo de eventos, consulte controlar y provocar eventos.For more information about handling events, see Handling and Raising Events.

Se aplica a

Consulte también: