ControlEventHandler デリゲート
Control クラスの ControlAdded イベントと ControlRemoved イベントを処理するメソッドを表します。
<Serializable>
Public Delegate Sub ControlEventHandler( _ ByVal sender As Object, _ ByVal e As ControlEventArgs _)
[C#]
[Serializable]
public delegate void ControlEventHandler( object sender, ControlEventArgs e);
[C++]
[Serializable]
public __gc __delegate void ControlEventHandler( Object* sender, ControlEventArgs* e);
[JScript] JScript では、.NET Framework のデリゲートを利用することができます。ただし、独自に定義することはできません。
パラメータ [Visual Basic, C#, C++]
作成するイベント ハンドラは、ControlEventHandler クラスのデリゲート定義と同一のパラメータを持つ必要があります。
- sender
イベントのソース。 - e
イベント データを格納している ControlEventArgs 。
解説
ControlEventArgs デリゲートを作成する場合は、イベントを処理するメソッドを識別します。イベントをイベント ハンドラに関連付けるには、デリゲートのインスタンスをイベントに追加します。デリゲートを削除しない限り、そのイベントが発生すると常にイベント ハンドラが呼び出されます。イベント ハンドラ デリゲートの詳細については、「 イベントとデリゲート 」を参照してください。
使用例
[Visual Basic, C#, C++] Binding を作成し、 ConvertEventHandler デリゲートを Parse イベントと Format イベントの両方に追加し、作成した Binding を DataBindings プロパティを使用して TextBox コントロールの BindingsCollection に追加する例を次に示します。 DecimalToCurrencyString イベント デリゲートは Format イベントに追加され、 ToString メソッドを使用して、バインドされた値 (Decimal 型) を通貨として書式設定します。 CurrencyStringToDecimal イベント デリゲートは Parse イベントに追加され、コントロールによって表示される値を Decimal 型に変換します。
Private Sub BindControl()
' Create the binding first. The OrderAmount is typed as Decimal.
Dim b As New Binding("Text", ds, "customers.custToOrders.OrderAmount")
' Add the delegates to the events.
AddHandler b.Format, AddressOf DecimalToCurrencyString
AddHandler b.Parse, AddressOf CurrencyStringToDecimal
text1.DataBindings.Add(b)
End Sub 'BindControl
Private Sub DecimalToCurrencyString(sender As Object, cevent As ConvertEventArgs)
' Check for the appropriate 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)
' Check for the appropriate DesiredType.
If Not cevent.DesiredType Is GetType(Decimal) Then
Return
End If
' Convert the string back to decimal using the static Parse method.
cevent.Value = Decimal.Parse(cevent.Value.ToString, _
NumberStyles.Currency, nothing)
End Sub 'CurrencyStringToDecimal
[C#]
private void BindControl()
{
// Create 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(DecimalToCurrencyString);
b.Parse += new ConvertEventHandler(CurrencyStringToDecimal);
text1.DataBindings.Add(b);
}
private void DecimalToCurrencyString(object sender, ConvertEventArgs cevent)
{
// Check for the appropriate 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)
{
// Check for the appropriate DesiredType.
if(cevent.DesiredType != typeof(decimal)) return;
// Convert the string back to decimal using the static Parse method.
cevent.Value = Decimal.Parse(cevent.Value.ToString(),
NumberStyles.Currency, null);
}
[C++]
private:
void BindControl()
{
// Create the binding first. The OrderAmount is typed as Decimal.
Binding* b = new Binding
(S"Text", ds, S"customers.custToOrders.OrderAmount");
// Add the delegates to the events.
b->Format += new ConvertEventHandler(this, &Form1::DecimalToCurrencyString);
b->Parse += new ConvertEventHandler(this, &Form1::CurrencyStringToDecimal);
text1->DataBindings->Add(b);
}
private:
void DecimalToCurrencyString(Object* /*sender*/, ConvertEventArgs* cevent)
{
// Check for the appropriate 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");
}
private:
void CurrencyStringToDecimal(Object* /*sender*/, ConvertEventArgs* cevent)
{
// Check for the appropriate DesiredType.
if(cevent->DesiredType != __typeof(Decimal)) return;
// Convert the string back to decimal using the static Parse method.
cevent->Value = __box(Decimal::Parse(cevent->Value->ToString(),
NumberStyles::Currency, 0));
}
[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 ファミリ
アセンブリ: System.Windows.Forms (System.Windows.Forms.dll 内)
参照
System.Windows.Forms 名前空間 | Binding | ControlEventArgs | ControlAdded | ControlRemoved