ConvertEventHandler (Delegado)
Actualización: noviembre 2007
Espacio de nombres: System.Windows.FormsEnsamblado: System.Windows.Forms (en System.Windows.Forms.dll)
/** @delegate */ public delegate void ConvertEventHandler( Object sender, ConvertEventArgs e )
Parámetros
- sender
- Tipo: System.Object
Origen del evento.
- e
- Tipo: System.Windows.Forms.ConvertEventArgs
ConvertEventArgs que contiene los datos del evento.
Cuando se crea un delegado ConvertEventHandler, se identifica el método que controlará el evento. Para asociar el evento con el controlador de eventos, hay que agregar una instancia del delegado al evento. Se llama al controlador de eventos siempre que se produce el evento, a menos que se quite el delegado. Para obtener más información acerca de delegados del controlador de eventos, vea Eventos y delegados.
En el siguiente ejemplo de código se crea un objeto Binding, se agrega un delegado ConvertEventHandler a los eventos Parse y Format y se agrega el objeto Binding a BindingsCollection de un control TextBox mediante la propiedad DataBindings. El delegado de evento DecimalToCurrency, agregado al evento Format, da formato al valor enlazado (un tipo Decimal) como moneda mediante el método ToString. El delegado de evento CurrencyToDecimal, agregado al evento Parse, convierte de nuevo el valor mostrado por el control al tipo Decimal.
private void DecimalToCurrency(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 CurrencyToDecimal(object sender, ConvertEventArgs cevent) { // ' The method converts only to decimal type. if (cevent.DesiredType != typeof(decimal)) return; // Converts the string back to decimal using the static ToDecimal method. cevent.Value = Convert.ToDecimal(cevent.Value.ToString()); } 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 events. b.Format += new ConvertEventHandler(DecimalToCurrency); b.Parse += new ConvertEventHandler(CurrencyToDecimal); text1.DataBindings.Add(b); }
private void DecimalToCurrency(Object sender, ConvertEventArgs cevent)
{
// The method converts only to string type.
// Test this using the DesiredType.
if (!(cevent.get_DesiredType().Equals(String.class.ToType()))) {
return ;
}
// Use the ToString method to format the value as currency ("c").
cevent.set_Value(((System.Decimal)cevent.get_Value()).ToString("c"));
} //DecimalToCurrency
private void CurrencyToDecimal(Object sender, ConvertEventArgs cevent)
{
// The method converts only to decimal type.
if (!(cevent.get_DesiredType().Equals(System.Decimal.class.ToType()))) {
return ;
}
// Converts the string back to decimal
// using the static ToDecimal method.
cevent.set_Value(Convert.ToDecimal(cevent.get_Value().ToString()));
} //CurrencyToDecimal
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 events.
b.add_Format(new ConvertEventHandler(DecimalToCurrency));
b.add_Parse(new ConvertEventHandler(CurrencyToDecimal));
text1.get_DataBindings().Add(b);
} //BindControl
Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Windows CE, Windows Mobile para Smartphone, Windows Mobile para Pocket PC
.NET Framework y .NET Compact Framework no admiten todas las versiones de cada plataforma. Para obtener una lista de las versiones compatibles, vea Requisitos de sistema de .NET Framework.