ConvertEventHandler 委托
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
public delegate void ConvertEventHandler(System::Object ^ sender, ConvertEventArgs ^ e);
public delegate void ConvertEventHandler(object sender, ConvertEventArgs e);
public delegate void ConvertEventHandler(object? sender, ConvertEventArgs e);
type ConvertEventHandler = delegate of obj * ConvertEventArgs -> unit
Public Delegate Sub ConvertEventHandler(sender As Object, e As ConvertEventArgs)
参数
- sender
- Object
事件源。
包含事件数据的 ConvertEventArgs。
示例
以下代码
示例创建 ,Binding将 委托添加到 ConvertEventHandlerParse 和 Format 事件,并通过 DataBindings 属性将 添加到BindingBindingsCollection控件的 TextBox 。
DecimalToCurrency
添加到 Format 事件的事件委托使用 ToString 方法将类型 (Decimal绑定值) 格式化为货币。
CurrencyToDecimal
添加到 事件的事件Parse委托将控件显示的值转换回 类型Decimal。
private:
void DecimalToCurrency( 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 CurrencyToDecimal( Object^ /*sender*/, ConvertEventArgs^ cevent )
{
// ' The method converts only to decimal type.
if ( cevent->DesiredType != Decimal::typeid )
{
return;
}
// Converts the string back to decimal using the static ToDecimal method.
cevent->Value = Convert::ToDecimal( cevent->Value->ToString() );
}
void BindControl()
{
// Creates the binding first. The OrderAmount is typed as Decimal.
Binding^ b = gcnew Binding(
"Text",ds,"customers.custToOrders.OrderAmount" );
// Add the delegates to the events.
b->Format += gcnew ConvertEventHandler(
this, &Form1::DecimalToCurrency );
b->Parse += gcnew ConvertEventHandler(
this, &Form1::CurrencyToDecimal );
text1->DataBindings->Add( b );
}
private void DecimalToCurrency(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 CurrencyToDecimal(object sender, ConvertEventArgs cevent)
{
// ' The method converts only to decimal type.
if (cevent.DesiredType != typeof(decimal)) return;
// Converts the string back to decimal using the static ToDecimal method.
cevent.Value = Convert.ToDecimal(cevent.Value.ToString());
}
private void BindControl()
{
// Creates the binding first. The OrderAmount is typed as Decimal.
Binding b = new Binding
("Text", ds, "customers.custToOrders.OrderAmount");
// Add the delegates to the events.
b.Format += new ConvertEventHandler(DecimalToCurrency);
b.Parse += new ConvertEventHandler(CurrencyToDecimal);
text1.DataBindings.Add(b);
}
Private Sub DecimalToCurrency(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
Return
End If
' Use the ToString method to format the value as currency ("c").
cevent.Value = CDec(cevent.Value).ToString("c")
End Sub
Private Sub CurrencyToDecimal(sender As Object, cevent As ConvertEventArgs)
' The method converts only to decimal type.
If cevent.DesiredType IsNot GetType(Decimal) Then
Return
End If
' Converts the string back to decimal using the static ToDecimal method.
cevent.Value = Convert.ToDecimal(cevent.Value.ToString())
End Sub
Private Sub BindControl()
' Creates the binding first. The OrderAmount is typed as Decimal.
Dim b As New Binding("Text", ds, "customers.custToOrders.OrderAmount")
' Adds the delegates to the events.
AddHandler b.Format, AddressOf DecimalToCurrency
AddHandler b.Parse, AddressOf CurrencyToDecimal
text1.DataBindings.Add(b)
End Sub
注解
创建 ConvertEventHandler 委托时,需要标识将处理该事件的方法。 若要将事件与事件处理程序关联,请将该委托的一个实例添加到事件中。 除非移除了该委托,否则每当发生该事件时就会调用事件处理程序。 有关事件处理程序委托的详细信息,请参阅 处理和引发事件。
扩展方法
GetMethodInfo(Delegate) |
获取指示指定委托表示的方法的对象。 |