Binding.Format Zdarzenie
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
Występuje, gdy właściwość kontrolki jest powiązana z wartością danych.
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
Typ zdarzenia
Przykłady
Poniższy przykładowy kod tworzy Bindingelement , dodaje ConvertEventHandler delegata zarówno do zdarzeń, jak Parse i Format , i dodaje Binding element do BindingsCollectionTextBox kontrolki za pośrednictwem DataBindings właściwości . Delegat DecimalToCurrencyString zdarzenia dodany do Format zdarzenia formatuje powiązaną wartość (typ) jako walutę DecimalToString przy użyciu metody . Delegat CurrencyStringToDecimal zdarzenia dodany do Parse zdarzenia konwertuje wartość wyświetlaną przez kontrolkę z powrotem na Decimal typ.
W tym przykładzie przyjęto założenie, że obecność DataSet nazwy 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
Uwagi
Zdarzenie Format jest zgłaszane, gdy dane są wypychane ze źródła danych do kontrolki. Zdarzenie można obsłużyć Format w celu przekonwertowania niesformatowanych danych ze źródła danych na sformatowane dane do wyświetlenia. Gdy dane są pobierane z kontrolki do źródła danych, Parse zdarzenie jest wywoływane w celu niesformatowania wyświetlanej wartości, a następnie Format zdarzenie następuje ponowne sformatowanie danych do wyświetlenia. Dzięki temu powiązana kontrolka wyświetla poprawnie sformatowane dane niezależnie od tego, czy użytkownik wprowadza sformatowane lub niesformatowane dane w kontrolce.
Zdarzenia Format i Parse umożliwiają tworzenie niestandardowych formatów do wyświetlania danych. Jeśli na przykład dane w tabeli mają typ Decimal, możesz wyświetlić dane w formacie waluty lokalnej, ustawiając Value właściwość ConvertEventArgs na wartość sformatowaną w Format zdarzeniu. W związku z tym należy usunąć formatowanie wyświetlanej Parse wartości w zdarzeniu.
Zdarzenie Format występuje za każdym razem, gdy Current wartość BindingManagerBase zmian obejmuje:
Przy pierwszym powiązaniu właściwości.
Za każdym razem, Position gdy zmiany.
Za każdym razem, gdy lista powiązana z danymi jest sortowana lub filtrowana, co jest wykonywane, gdy DataView lista jest dostarczana.
Zdarzenie Format występuje również po Parse zdarzeniu. Na przykład gdy kontrolka traci fokus, jego zawartość jest analizowana. Natychmiast po wypchnięciu nowych danych do kontrolki Format zdarzenie zezwala na formatowanie nowej zawartości.
Aby uzyskać więcej informacji na temat obsługi zdarzeń, zobacz Obsługa i wywoływanie zdarzeń.