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し、イベントBindingsCollectionParse Formatイベントの両方にデリゲートをBinding追加し、をTextBox使用して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 Decimalに追加されたイベントデリゲートは、 ToStringメソッドを使用して、バインドされた値 (型) を通貨として書式設定します。 FormatThe DecimalToCurrencyString event delegate, added to the Format event, formats the bound value (a Decimal type) as currency using the ToString method. イベントCurrencyStringToDecimal Decimalに追加されたイベントデリゲートは、コントロールによって表示される値を型に変換します。 ParseThe 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にプルされると、イベントが発生して、表示される値が 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. その結果、 Parseイベントに表示される値を unformat する必要があります。You must consequently unformat the displayed value in the Parse event.

イベントFormatCurrentBindingManagerBaseの値が変更されるたびに発生します。これには次のものが含まれます。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.

適用対象

こちらもご覧ください