Binding.Format Событие
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Происходит, если свойство элемента управления привязано к значению данных.
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
Тип события
Примеры
В следующем примере кода создается Binding, добавляется ConvertEventHandler делегат как к событиям Parse и Format , так и Binding к BindingsCollection элементу TextBox управления с помощью DataBindings свойства . Делегат DecimalToCurrencyString
события, добавленный к событию Format , форматирует привязанное Decimal значение (тип) как валюту ToString с помощью метода . Делегат CurrencyStringToDecimal
события, добавленный к событию Parse , преобразует значение, отображаемое элементом управления, обратно в Decimal тип .
В этом примере предполагается наличие именованного 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
Комментарии
Событие Format возникает при отправке данных из источника данных в элемент управления . Событие можно обработать Format , чтобы преобразовать неформатированные данные из источника данных в форматированные данные для отображения. При извлечении данных из элемента управления в источник Parse данных возникает событие для отмены формата отображаемого значения, а затем Format происходит событие для переформатировки данных для отображения. Это гарантирует, что привязанный элемент управления отображает правильно отформатированные данные независимо от того, вводит ли пользователь форматированные или неформатированные данные в элементе управления.
События Format и Parse позволяют создавать настраиваемые форматы для отображения данных. Например, если данные в таблице имеют тип Decimal, можно отобразить данные в формате локальной валюты, задав Value свойству ConvertEventArgs объекта значение форматирования в событии Format . Следовательно, необходимо неформатировать отображаемое значение в событии Parse .
Событие Format возникает всякий BindingManagerBase раз, Current когда значение изменяется, в том числе:
При первой привязке свойства.
В любой момент изменения Position .
Каждый раз, когда привязанный к данным список отсортирован или фильтруется, что выполняется, когда предоставляет DataView список.
Событие Format также возникает после Parse события . Например, когда элемент управления теряет фокус, анализируется его содержимое. Сразу после этого, когда новые данные отправляются в элемент управления, происходит событие, Format позволяющее отформатировать новое содержимое.
Дополнительные сведения об обработке событий см. в разделе Обработка и вызов событий.