Partilhar via


Binding.Format Evento

Definição

Ocorre quando a propriedade de um controle é associada a um valor de dados.

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 

Tipo de evento

Exemplos

O exemplo de código a seguir cria um Binding, adiciona um ConvertEventHandler delegado aos Parse eventos e Format e adiciona o BindingBindingsCollection ao de um TextBox controle por meio da DataBindings propriedade . O DecimalToCurrencyString delegado de eventos, adicionado ao Format evento, formata o valor associado (um Decimal tipo) como moeda usando o ToString método . O CurrencyStringToDecimal delegado de eventos, adicionado ao Parse evento, converte o valor exibido pelo controle de volta para o Decimal tipo .

Este exemplo pressupõe a presença de um DataSet chamado 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

Comentários

O Format evento é gerado quando os dados são enviados por push da fonte de dados para o controle . Você pode manipular o Format evento para converter dados não formatados da fonte de dados em dados formatados para exibição. Quando os dados são extraídos do controle para a fonte de dados, o Parse evento é gerado para desformar o valor exibido e, em seguida, o Format evento ocorre para reformatar os dados para exibição. Isso garante que o controle associado exiba dados formatados corretamente, independentemente de o usuário inserir dados formatados ou não formatados no controle.

Os Format eventos e Parse permitem que você crie formatos personalizados para exibir dados. Por exemplo, se os dados em uma tabela forem do tipo Decimal, você poderá exibir os dados no formato de moeda local definindo a Value propriedade do ConvertEventArgs como o valor formatado no Format evento. Consequentemente, você deve desformar o valor exibido no Parse evento.

O Format evento ocorre sempre que o Current valor das BindingManagerBase alterações, que inclui:

  • A primeira vez que a propriedade é associada.

  • Sempre que as Position alterações forem alteradas.

  • Sempre que a lista associada a dados é classificada ou filtrada, o que é realizado quando um DataView fornece a lista.

O Format evento também ocorre após o Parse evento. Por exemplo, quando um controle perde o foco, seu conteúdo é analisado. Imediatamente depois, à medida que novos dados são enviados por push para o controle, o Format evento ocorre permitindo que o novo conteúdo seja formatado.

Para obter mais informações sobre como lidar com eventos, consulte Manipulando e levantando eventos.

Aplica-se a

Confira também