Export (0) Print
Expand All
This topic has not yet been rated - Rate this topic

ConvertEventArgs Class

Provides data for the Format and Parse events.

For a list of all members of this type, see ConvertEventArgs Members.

System.Object
   System.EventArgs
      System.Windows.Forms.ConvertEventArgs

[Visual Basic]
Public Class ConvertEventArgs
   Inherits EventArgs
[C#]
public class ConvertEventArgs : EventArgs
[C++]
public __gc class ConvertEventArgs : public EventArgs
[JScript]
public class ConvertEventArgs extends EventArgs

Thread Safety

Any public static (Shared in Visual Basic) members of this type are thread safe. Any instance members are not guaranteed to be thread safe.

Remarks

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 object 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.

Example

[Visual Basic, C#, C++] The following 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.

[Visual Basic] 
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

[C#] 
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");
   // Adds the delegates to the events.
   b.Format += new ConvertEventHandler(DecimalToCurrencyString);
   b.Parse += new ConvertEventHandler(CurrencyStringToDecimal);
   text1.DataBindings.Add(b);
}


[C++] 
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 = (dynamic_cast<Decimal*> (cevent->Value))->ToString(S"c");
}

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 = __box(Decimal::Parse(cevent->Value->ToString(),
   NumberStyles::Currency, 0));
}

void BindControl()
{
   // Creates the binding first. The OrderAmount is typed as Decimal.
   Binding* b = new Binding
   (S"Text", ds, S"customers.custToOrders.OrderAmount");
   // Adds the delegates to the events.
   b->Format += new ConvertEventHandler(this, &Form1::DecimalToCurrencyString);
   b->Parse += new ConvertEventHandler(this, &Form1::CurrencyStringToDecimal);
   text1->DataBindings->Add(b);
}

[JScript] No example is available for JScript. To view a Visual Basic, C#, or C++ example, click the Language Filter button Language Filter in the upper-left corner of the page.

Requirements

Namespace: System.Windows.Forms

Platforms: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 family, .NET Compact Framework

Assembly: System.Windows.Forms (in System.Windows.Forms.dll)

See Also

ConvertEventArgs Members | System.Windows.Forms Namespace | Binding | BindingManagerBase | BindingsCollection | DataBindings

Show:
© 2014 Microsoft. All rights reserved.