Binding.Format Olay

Tanım

Bir denetimin özelliği bir veri değerine bağlı olduğunda gerçekleşir.

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 

Olay Türü

Örnekler

Aşağıdaki kod örneği bir Bindingoluşturur, hem ve Format olaylarına bir ConvertEventHandler temsilci ekler hem de Parse özelliği aracılığıyla bir TextBox denetimin DataBindings öğesine ekler BindingBindingsCollection. Olaya DecimalToCurrencyString eklenen Format olay temsilcisi, yöntemini kullanarak ilişkili değeri (bir Decimal tür) para birimi olarak biçimlendirer ToString . Olaya CurrencyStringToDecimal eklenen Parse olay temsilcisi, denetim tarafından görüntülenen değeri türüne Decimal geri dönüştürür.

Bu örnekte, adlı dsbir DataSet varlığının olduğu varsayılır.

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

Açıklamalar

Olay Format , veriler veri kaynağından denetime gönderildiğinde oluşturulur. Biçimlendirilmemiş verileri veri kaynağından görüntülenmek üzere biçimlendirilmiş verilere dönüştürmek için olayı işleyebilirsiniz Format . Veriler denetimden veri kaynağına çekildiğinde, Parse olay görüntülenen değeri biçimlendirmek için tetiklendi, ardından Format olay verileri görüntülenmek üzere yeniden biçimlendirmek için gerçekleşir. Bu, kullanıcının denetime biçimlendirilmiş veya biçimlendirilmemiş veriler girip girmediğine bakılmaksızın, bağlı denetimin doğru biçimlendirilmiş verileri görüntülemesini sağlar.

Format ve Parse olayları, verileri görüntülemek için özel biçimler oluşturmanıza olanak sağlar. Örneğin, tablodaki veriler türündeyseDecimal, özelliğini ConvertEventArgs olaydaki biçimlendirilmiş değere Format ayarlayarak Value verileri yerel para birimi biçiminde görüntüleyebilirsiniz. Sonuç olarak olayda görüntülenen değeri biçimlendirmeyi Parse kaldırmanız gerekir.

OlayFormat, değişikliklerin değeri BindingManagerBase aşağıdakiler dahil olduğunda Current gerçekleşir:

  • Özelliğin ilk kez bağlı olması.

  • Değişiklikler ne zaman Position olursa.

  • Veriye bağlı liste her sıralandığında veya filtrelendiğinde, bu liste sağlandığında DataView gerçekleştirilir.

Olay, Format olaydan sonra Parse da gerçekleşir. Örneğin, bir denetim odağı kaybettiğinde içeriği ayrıştırılır. Hemen ardından, denetime yeni veriler gönderildiğinde, Format yeni içeriğin biçimlendirilmesine izin veren olay gerçekleşir.

Olayları işleme hakkında daha fazla bilgi için bkz. Olayları İşleme ve Oluşturma.

Şunlara uygulanır

Ayrıca bkz.