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