次の方法で共有


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 プロパティを使用して BindingTextBox コントロールの 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