ConvertEventArgs Class
Assembly: System.Windows.Forms (in system.windows.forms.dll)
The ConvertEventArgs is used to format and unformat values displayed by a Windows Forms control that is bound to data through a Binding object. The Format event occurs whenever a control property is bound to a value and the Parse event occurs whenever the bound value changes.
The Format and Parse events allow you to create custom formats for displaying data. For example, if the data in a table is of type Decimal, you can specify that the data should be displayed in the local currency format--by setting the Value property of the ConvertEventArgs to the formatted value in the Format event. You must consequently unformat the displayed value in the Parse event.
For more information about handling events, see Consuming Events.
The following code example creates a Binding, adds a ConvertEventHandler delegate to both the Parse and Format events, and uses the DataBindings property to add the Binding to the BindingsCollection of a TextBox control. The DecimalToCurrencyString event delegate, which is added to the Format event, uses the ToString method to format the bound value (a Decimal type) as currency. The CurrencyStringToDecimal event delegate, which is added to the Parse event, converts the value displayed by the control back to the Decimal type.
Private Sub DecimalToCurrencyString(sender As Object, cevent As ConvertEventArgs) ' The method converts only to string type. Test this using the DesiredType. If Not cevent.DesiredType Is GetType(String) Then Return End If ' Use the ToString method to format the value as currency ("c"). cevent.Value = CDec(cevent.Value).ToString("c") End Sub 'DecimalToCurrencyString Private Sub CurrencyStringToDecimal(sender As Object, cevent As ConvertEventArgs) ' The method converts back to decimal type only. If Not cevent.DesiredType Is GetType(Decimal) Then Return End If ' Converts the string back to decimal using the shared Parse method. cevent.Value = Decimal.Parse(cevent.Value.ToString, _ NumberStyles.Currency, nothing) End Sub 'CurrencyStringToDecimal Private Sub BindControl() ' Creates the binding first. The OrderAmount is typed as Decimal. Dim b As New Binding("Text", ds, "customers.custToOrders.OrderAmount") ' Adds the delegates to the events. AddHandler b.Format, AddressOf DecimalToCurrencyString AddHandler b.Parse, AddressOf CurrencyStringToDecimal text1.DataBindings.Add(b) End Sub 'BindControl
private void DecimalToCurrencyString(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"));
} //DecimalToCurrencyString
private void CurrencyStringToDecimal(Object sender, ConvertEventArgs cevent)
{
// The method converts back to decimal type only.
if (!(cevent.get_DesiredType().Equals(System.Decimal.class.ToType()))) {
return ;
}
// Converts the string back to decimal using the static Parse method.
cevent.set_Value(Decimal.Parse(cevent.get_Value().ToString(),
NumberStyles.Currency, null));
} //CurrencyStringToDecimal
private void BindControl()
{
// Creates the binding first. The OrderAmount is typed as Decimal.
Binding b = new Binding("Text", ds,
"customers.custToOrders.OrderAmount");
// Adds the delegates to the events.
b.add_Format(new ConvertEventHandler(DecimalToCurrencyString));
b.add_Parse(new ConvertEventHandler(CurrencyStringToDecimal));
text1.get_DataBindings().Add(b);
} //BindControl
Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile for Pocket PC, Windows Mobile for Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
The .NET Framework does not support all versions of every platform. For a list of the supported versions, see System Requirements.