ConvertEventArgs クラス
Format イベントと Parse イベントのデータを提供します。
この型のすべてのメンバの一覧については、ConvertEventArgs メンバ を参照してください。
System.Object
System.EventArgs
System.Windows.Forms.ConvertEventArgs
Public Class ConvertEventArgs
Inherits EventArgs
[C#]
public class ConvertEventArgs : EventArgs
[C++]
public __gc class ConvertEventArgs : public EventArgs
[JScript]
public class ConvertEventArgs extends EventArgs
スレッドセーフ
この型の public static (Visual Basicでは Shared) のすべてのメンバは、マルチスレッド操作で安全に使用できます。インスタンスのメンバの場合は、スレッドセーフであるとは限りません。
解説
ConvertEventArgs は、 Binding オブジェクトを通じてデータに連結された Windows フォーム コントロールによって表示される値の書式を、設定したり元に戻したりするために使用されます。 Format イベントはコントロール プロパティが値にバインドされるたびに発生し、 Parse イベントはバインドされた値が変更されるたびに発生します。
Format イベントと Parse イベントによって、データ表示用のカスタム書式を作成できます。たとえば、テーブルのデータ型が Decimal の場合は、データをローカルな通貨書式で表示するように指定できます。ローカルな通貨書式で表示するには、 ConvertEventArgs オブジェクトの Value プロパティを、 Format イベントで書式設定した値に設定します。その後、 Parse イベントで、表示した値の書式を解除する必要があります。
イベント処理の詳細については、「 イベントの利用 」を参照してください。
使用例
[Visual Basic, C#, C++] 次の例では、 Binding を作成し、 ConvertEventHandler デリゲートを Parse イベントと Format イベントの両方に追加し、 DataBindings プロパティを使用して Binding を TextBox コントロールの BindingsCollection に追加します。 DecimalToCurrencyString イベント デリゲートは Format イベントに追加され、 ToString メソッドを使用して、バインドされた値 (Decimal 型) を通貨として書式設定します。 CurrencyStringToDecimal イベント デリゲートは Parse イベントに追加され、コントロールによって表示される値を Decimal 型に変換します。
Private Sub DecimalToCurrencyString(sender As Object, cevent As ConvertEventArgs)
' The method converts only to string type. Test this using the DesiredType.
If Not cevent.DesiredType Is 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 'DecimalToCurrencyString
Private Sub CurrencyStringToDecimal(sender As Object, cevent As ConvertEventArgs)
' The method converts back to decimal type only.
If Not cevent.DesiredType Is GetType(Decimal) Then
Return
End If
' Converts the string back to decimal using the shared Parse method.
cevent.Value = Decimal.Parse(cevent.Value.ToString, _
NumberStyles.Currency, nothing)
End Sub 'CurrencyStringToDecimal
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 DecimalToCurrencyString
AddHandler b.Parse, AddressOf CurrencyStringToDecimal
text1.DataBindings.Add(b)
End Sub 'BindControl
[C#]
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 typed as Decimal.
Binding b = new Binding
("Text", ds, "customers.custToOrders.OrderAmount");
// Adds the delegates to the events.
b.Format += new ConvertEventHandler(DecimalToCurrencyString);
b.Parse += new ConvertEventHandler(CurrencyStringToDecimal);
text1.DataBindings.Add(b);
}
[C++]
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 = (dynamic_cast<Decimal*> (cevent->Value))->ToString(S"c");
}
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 = __box(Decimal::Parse(cevent->Value->ToString(),
NumberStyles::Currency, 0));
}
void BindControl()
{
// Creates the binding first. The OrderAmount is typed as Decimal.
Binding* b = new Binding
(S"Text", ds, S"customers.custToOrders.OrderAmount");
// Adds the delegates to the events.
b->Format += new ConvertEventHandler(this, &Form1::DecimalToCurrencyString);
b->Parse += new ConvertEventHandler(this, &Form1::CurrencyStringToDecimal);
text1->DataBindings->Add(b);
}
[JScript] JScript のサンプルはありません。Visual Basic、C#、および C++ のサンプルを表示するには、このページの左上隅にある言語のフィルタ ボタン をクリックします。
必要条件
名前空間: System.Windows.Forms
プラットフォーム: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 ファミリ, .NET Compact Framework - Windows CE .NET
アセンブリ: System.Windows.Forms (System.Windows.Forms.dll 内)
参照
ConvertEventArgs メンバ | System.Windows.Forms 名前空間 | Binding | BindingManagerBase | BindingsCollection | DataBindings