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 

示例

下面的代码示例将创建Binding,添加ConvertEventHandler委托ParseFormat事件,并将添加BindingBindingsCollectionTextBox通过控制DataBindings属性。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添加到的事件委托Format事件,设置绑定的值的格式 (Decimal类型) 作为货币使用ToString方法。The DecimalToCurrencyString event delegate, added to the Format event, formats the bound value (a Decimal type) as currency using the ToString method. CurrencyStringToDecimal添加到的事件委托Parse事件,将由控件显示的值转换回Decimal类型。The CurrencyStringToDecimal event delegate, added to the Parse event, converts the value displayed by the control back to the Decimal type.

此示例假定存在DataSet名为dsThis 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引发事件来取消格式化显示的值,则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. 因此必须取消它们中的显示的值Parse事件。You must consequently unformat the displayed value in the Parse event.

Format事件会发生Current的值BindingManagerBase更改,其中包括: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.

适用于

另请参阅