Binding.Format Binding.Format Binding.Format Binding.Format Event

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, agrega un ConvertEventHandler delegado a ambos el Parse y Format eventos y agrega el Binding a la BindingsCollection de un TextBox controlar a través de la DataBindings propiedad.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 DecimalToCurrencyString delegado de evento, agrega a la Format eventos, da formato al valor enlazado (un Decimal tipo) como moneda mediante el ToString método.The DecimalToCurrencyString event delegate, added to the Format event, formats the bound value (a Decimal type) as currency using the ToString method. El CurrencyStringToDecimal delegado de evento, agrega a la Parse eventos, convierte el valor mostrado por el control a la Decimal tipo.The CurrencyStringToDecimal event delegate, added to the Parse event, converts the value displayed by the control back to the Decimal type.

Este ejemplo supone 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 Format evento se produce cuando se insertan datos del origen de datos en el control.The Format event is raised when data is pushed from the data source into the control. Puede controlar la Format eventos para convertir los datos sin formato desde el origen de datos en formato de datos para su presentación.You can handle the Format event to convert unformatted data from the data source into formatted data for display. Cuando se extraen datos desde el control de origen de datos, el Parse evento se desencadena para quitar el valor mostrado, el Format se produce un evento para volver a formatear 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 muestra los datos con el formato correcto, independientemente de si el usuario escribe datos con 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.

El Format y Parse eventos le 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 en una tabla están de tipo Decimal, puede mostrar los datos en el formato de moneda local estableciendo el Value propiedad de la ConvertEventArgs al valor con formato en el Format eventos.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. Por lo tanto debe quitar el valor mostrado en el Parse eventos.You must consequently unformat the displayed value in the Parse event.

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

  • La primera vez que la propiedad está enlazada.The first time the property is bound.

  • Cualquier momento el Position cambios.Any time the Position changes.

  • Cada vez que la lista enlazado a datos se ordenan o filtran, que es cuando realiza una DataView proporciona la lista.Whenever the data-bound list is sorted or filtered, which is accomplished when a DataView supplies the list.

El Format evento también se produce después de la Parse eventos.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, cuando se insertan nuevos datos en el control, el Format evento se produce 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: