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

설명

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.

적용 대상

추가 정보