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.

適用対象

こちらもご覧ください