Binding.Format Evento
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
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.