Share via


Binding.Format Kejadian

Definisi

Terjadi ketika properti kontrol terikat ke nilai data.

public:
 event System::Windows::Forms::ConvertEventHandler ^ Format;
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 

Jenis Acara

Contoh

Contoh kode berikut membuat Binding, menambahkan ConvertEventHandler delegasi ke Parse peristiwa dan Format , dan menambahkan Binding ke BindingsCollection kontrol TextBox melalui DataBindings properti . Delegasi DecimalToCurrencyString peristiwa, ditambahkan ke Format peristiwa, memformat nilai terikat ( Decimal jenis) sebagai mata uang menggunakan ToString metode . Delegasi CurrencyStringToDecimal peristiwa, ditambahkan ke Parse peristiwa, mengonversi nilai yang ditampilkan oleh kontrol kembali ke Decimal jenis .

Contoh ini mengasumsikan keberadaan bernama DataSetds.

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

Keterangan

Peristiwa Format dimunculkan ketika data didorong dari sumber data ke dalam kontrol. Anda dapat menangani Format peristiwa untuk mengonversi data yang tidak diformat dari sumber data menjadi data yang diformat untuk ditampilkan. Ketika data ditarik dari kontrol ke sumber data, Parse peristiwa dinaikkan untuk membatalkan format nilai yang ditampilkan, maka Format peristiwa terjadi untuk memformat ulang data untuk ditampilkan. Ini memastikan bahwa kontrol terikat menampilkan data yang diformat dengan benar terlepas dari apakah pengguna memasukkan data yang diformat atau tidak diformat dalam kontrol.

Peristiwa Format dan Parse memungkinkan Anda membuat format kustom untuk menampilkan data. Misalnya, jika data dalam tabel berjenis Decimal, Anda dapat menampilkan data dalam format mata uang lokal dengan mengatur Value properti ke ConvertEventArgs nilai yang diformat dalam peristiwa tersebut Format . Anda akibatnya harus membatalkan format nilai yang ditampilkan dalam peristiwa tersebut Parse .

Peristiwa terjadi Format setiap kali Current nilai BindingManagerBase perubahan, yang mencakup:

  • Pertama kali properti terikat.

  • Setiap kali perubahan Position .

  • Setiap kali daftar terikat data diurutkan atau difilter, yang dicapai saat memasok DataView daftar.

Peristiwa juga Format terjadi setelah Parse peristiwa. Misalnya, ketika kontrol kehilangan fokus, kontennya diurai. Segera setelah itu, saat data baru didorong ke kontrol, peristiwa terjadi Format memungkinkan konten baru diformat.

Untuk informasi selengkapnya tentang menangani peristiwa, lihat Menangani dan Menaikkan Peristiwa.

Berlaku untuk

Lihat juga