Binding.Parse 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 cambia el valor de un control con enlace a datos.
public:
event System::Windows::Forms::ConvertEventHandler ^ Parse;
public event System.Windows.Forms.ConvertEventHandler Parse;
public event System.Windows.Forms.ConvertEventHandler? Parse;
member this.Parse : System.Windows.Forms.ConvertEventHandler
Public Custom Event Parse 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.
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 typed as Decimal.
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 typed as Decimal.
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
' Convert the string back to decimal using the shared Parse method.
cevent.Value = Decimal.Parse(cevent.Value.ToString, _
NumberStyles.Currency, nothing)
End Sub
Private Sub BindControl
' Create the binding first. The OrderAmount is typed as Decimal.
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
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 Parse evento se produce en las siguientes condiciones:
Cuando se llama al EndCurrentEdit método de BindingManagerBase .
Cuando cambia el CurrentBindingManagerBase de (es decir, cuando cambia Position ).
Para obtener más información sobre el manejo de eventos, consulte controlar y provocar eventos.