Binding.Format Událost
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Nastane, když je vlastnost ovládacího prvku vázána na datovou hodnotu.
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
Event Type
Příklady
Následující příklad kódu vytvoří Binding, přidá ConvertEventHandler delegáta do událostí a FormatParse a přidá Binding do BindingsCollectionTextBox ovládacího prvku prostřednictvím DataBindings vlastnosti . Delegát DecimalToCurrencyString
události přidaný do Format události formátuje vázanou hodnotu ( Decimal typ) jako měnu pomocí ToString metody . Delegát CurrencyStringToDecimal
události přidaný k Parse události převede hodnotu zobrazenou ovládacím prvku zpět na Decimal typ.
V tomto příkladu se předpokládá přítomnost pojmenovaného 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
Poznámky
Událost Format se vyvolá, když se data nasdílí ze zdroje dat do ovládacího prvku. Událost můžete zpracovat a Format převést neformátovaná data ze zdroje dat na formátovaná data pro zobrazení. Když se data přečtou z ovládacího prvku do zdroje dat, událost je vyvolána tak, Parse aby se zobrazovaná hodnota neformátovala, a pak Format k události dojde k přeformátování dat pro zobrazení. Tím se zajistí, že vázaný ovládací prvek zobrazí správně formátovaná data bez ohledu na to, jestli uživatel zadá do ovládacího prvku formátovaná nebo neformátovaná data.
Události Format a Parse umožňují vytvářet vlastní formáty pro zobrazení dat. Pokud jsou například data v tabulce typu Decimal, můžete data zobrazit ve formátu místní měny nastavením Value vlastnosti ConvertEventArgs na formátovanou hodnotu v Format události. V důsledku toho je nutné zrušit formátování zobrazené hodnoty v Parse události.
K Format události dochází vždy, když se Current změní hodnota BindingManagerBase , která zahrnuje:
Při prvním vázání vlastnosti.
Kdykoli se Position změní.
Kdykoli se seznam vázaný na data seřadí nebo vyfiltruje, což se provede, když seznam poskytne.DataView
Událost Format nastane také po události Parse . Pokud například ovládací prvek ztratí fokus, jeho obsah se analyzuje. Jakmile se do ovládacího prvku nasdílí nová data, dojde k události, Format která umožní formátování nového obsahu.
Další informace o zpracování událostí najdete v tématu Zpracování a vyvolávání událostí.