Binding.Format Binding.Format Binding.Format Binding.Format Event

定義

發生於控制項屬性繫結至資料值時。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 

範例

下列程式碼範例會建立BindingConvertEventHandler將委派加入至BindingsCollection Binding Format Parse和事件TextBox ,並透過,將新增至控制項的。DataBindingsproperty.The 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. 加入DecimalToCurrencyString Decimal至事件的事件委派會使用ToString方法, 將系結值 (類型) 格式化為貨幣。 FormatThe DecimalToCurrencyString event delegate, added to the Format event, formats the bound value (a Decimal type) as currency using the ToString method. 事件委派 (加入Parse至事件) 會將控制項所顯示的值, 轉換回該Decimal類型。 CurrencyStringToDecimalThe CurrencyStringToDecimal event delegate, added to the Parse event, converts the value displayed by the control back to the Decimal type.

這個範例假設存在DataSet名為ds的。This 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

備註

從資料來源將資料推送至控制項時, 就會引發事件。FormatThe 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中的資料類型為, 您可以將的Value屬性ConvertEventArgs設定為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.

每當變更的Format BindingManagerBase值 (包括下列專案) 時, 就會發生此事件: CurrentThe 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.

事件也會發生在Parse事件之後。 FormatThe 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.

適用於

另請參閱