Binding.Format 事件

定義

發生於控制項屬性繫結至資料值時。Occurs when the property of a control is bound to a data value.

public:
 event System::Windows::Forms::ConvertEventHandler ^ Format;
public event System.Windows.Forms.ConvertEventHandler Format;
member this.Format : System.Windows.Forms.ConvertEventHandler 
Public Custom Event Format As ConvertEventHandler 

範例

下列程式碼範例會建立 Binding、將 ConvertEventHandler 委派加入至 ParseFormat 事件,並透過 Binding 屬性將 BindingsCollection 新增至 TextBox 控制項的 DataBindingsThe following code example creates a Binding, adds a ConvertEventHandler delegate to both the Parse and Format events, and adds the Binding to the BindingsCollection of a TextBox control through the DataBindings property. 加入至 Format 事件的 DecimalToCurrencyString 事件委派會使用 ToString 方法,將系結值(Decimal 類型)格式化為貨幣。The DecimalToCurrencyString event delegate, added to the Format event, formats the bound value (a Decimal type) as currency using the ToString method. 加入至 Parse 事件的 CurrencyStringToDecimal 事件委派會將控制項所顯示的值,轉換回 Decimal 類型。The CurrencyStringToDecimal event delegate, added to the Parse event, converts the value displayed by the control back to the Decimal type.

這個範例假設存在名為 dsDataSetThis example assumes the presence of a DataSet named ds.

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 a Decimal type.
      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 a Decimal type.
   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

   ' Converts the string back to decimal using the static ToDecimal method.
   cevent.Value = Decimal.Parse(cevent.Value.ToString, _
   NumberStyles.Currency, nothing)
End Sub

Private Sub BindControl
   ' Creates the binding first. The OrderAmount is a Decimal type.
   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

備註

當資料從資料來源推送至控制項時,就會引發 Format 事件。The Format event is raised when data is pushed from the data source into the control. 您可以處理 Format 事件,將未格式化的資料從資料來源轉換成要顯示的格式化資料。You can handle the Format event to convert unformatted data from the data source into formatted data for display. 將資料從控制項提取到資料來源時,會引發 Parse 事件來 unformat 顯示的值,然後 Format 事件會重新格式化資料以供顯示。When data is pulled from the control into the data source, the Parse event is raised to unformat the displayed value, then the Format event occurs to reformat the data for display. 這可確保繫結控制項顯示正確格式的資料,不論使用者是否在控制項中輸入已格式化或未格式化的資料。This ensures that the bound control displays correctly formatted data regardless of whether the user enters formatted or unformatted data in the control.

FormatParse 事件可讓您建立用來顯示資料的自訂格式。The Format and Parse events allow you to create custom formats for displaying data. 例如,如果資料表中的資料是 Decimal類型,您可以將 ConvertEventArgsValue 屬性設定為 Format 事件中的格式化值,以顯示本地貨幣格式的資料。For example, if the data in a table is of type Decimal, you can display the data in the local currency format by setting the Value property of the ConvertEventArgs to the formatted value in the Format event. 因此,您必須 unformat Parse 事件中顯示的值。You must consequently unformat the displayed value in the Parse event.

每當 BindingManagerBaseCurrent 值變更時,就會發生 Format 事件,其中包括:The Format event occurs whenever the Current value of the BindingManagerBase changes, which includes:

  • 屬性的第一次系結。The first time the property is bound.

  • Position 變更時。Any time the Position changes.

  • 每當資料系結清單經過排序或篩選時,就會在 DataView 提供清單時完成。Whenever the data-bound list is sorted or filtered, which is accomplished when a DataView supplies the list.

Format 事件也會發生在 Parse 事件之後。The Format event also occurs after the Parse event. 例如,當控制項失去焦點時,就會剖析其內容。For example, when a control loses focus, its contents are parsed. 之後,當新資料推送至控制項時,就會發生 Format 事件,以允許格式化新的內容。Immediately afterward, as new data is pushed into the control, the Format event occurs allowing the new contents to be formatted.

如需處理事件的詳細資訊,請參閱處理和引發事件For more information about handling events, see Handling and Raising Events.

適用於

另請參閱