PowerTools MultiRow for Windows Forms 8.0J
CellFormatting イベント
使用例 

表示のためにセルの内容を書式設定する必要があるときに発生します。
構文
イベント データ

イベント ハンドラが、このイベントに関連するデータを含む、CellFormattingEventArgs 型の引数を受け取りました。次の CellFormattingEventArgs プロパティには、このイベントの固有の情報が記載されます。

プロパティ解説
CellIndexSection内でのセルのインデックスを取得します。  
CellNameセルの名前を取得します。  
CellStyle書式設定されるセルのスタイルを取得または設定します。  
DesiredType System.Windows.Forms.ConvertEventArgsから継承されます。
FormattingAppliedセル値が正常に書式設定されたかどうかを示す値を取得または設定します。  
RowIndexイベントが発生したオーナーRowのインデックスを取得します。  
Scopeイベントが発生したセルの領域を取得します。  
SectionIndexイベントが発生したオーナーSectionのインデックスを取得します。  
Value System.Windows.Forms.ConvertEventArgsから継承されます。
解説

既定では、GcMultiRowコントロールはセルの値を表示に適した書式に変換しようとします。たとえば、テキストボックス型セルでは、数値は表示用の文字列に変換されます。DefaultCellStyleプロパティなどのプロパティによって返されるCellStyleCellStyle.Formatプロパティを設定することで、使用する書式変換を指定できます。

標準書式では不十分な場合は、CellFormattingイベントを処理することによって書式設定をカスタマイズできます。このイベントを使用すると、正確な表示値と、セルの表示に使用するセルスタイル(背景色や前景色など)を指定できます。これは、セル値自体に書式設定が必要であるかどうかにかかわらず、どのような種類のセル書式設定にもこのイベントを処理できることを意味します。

CellFormattingイベントは各セルが描画されるたびに発生するので、このイベントを処理するときは時間のかかる処理を避ける必要があります。このイベントは、セルのCell.FormattedValueが取得されたときにも発生します。

CellFormattingイベントを処理するとき、System.Windows.Forms.ConvertEventArgs.Valueプロパティはセル値で初期化されます。セル値から表示値へのカスタムの変換を提供する場合は、System.Windows.Forms.ConvertEventArgs.Valueプロパティの値を変換後の値に設定します。このとき、新しい値の型は必ずセルのCell.FormattedValueTypeプロパティで指定された型にします。そして、後続の処理でさらに値が書式設定されないように、CellFormattingEventArgs.FormattingAppliedプロパティをtrueに設定します。

イベントハンドラが完了したとき、System.Windows.Forms.ConvertEventArgs.Valueがnull 参照 (Visual Basicでは Nothing)であるか適切な型でない場合、またはCellFormattingEventArgs.FormattingAppliedプロパティがfalseの場合は、CellFormattingEventArgs.CellStyleプロパティ(これはセルのCell.InheritedStyleプロパティを使用して初期化されます)によって返されたセルスタイルのCellStyle.FormatCellStyle.NullValueCellStyle.DataSourceNullValueCellStyle.FormatProviderの各プロパティを使用して値が書式設定されます。

CellFormattingEventArgs.FormattingAppliedプロパティの値にかかわらず、セルのレンダリングには、CellFormattingEventArgs.CellStyleプロパティによって返されたオブジェクトの表示プロパティが使用されます。

ユーザー指定の書式設定された値から実際のセル値への変換をカスタマイズするには、CellParsingイベントを処理します。

使用例
次のサンプルコードは、このイベントを使用して、特定の条件を満たすセルの外観をカスタマイズする方法を示します。このサンプルコードは、CellStyleクラスに示されている詳細なコード例の一部を抜粋したものです。
void gcMultiRow1_CellFormatting(object sender, CellFormattingEventArgs e)
{
    // Customize cell style in cell formating.
    if (e.Scope == CellScope.Row)
    {
        if (e.Value != null)
        {
            int value;
            if (int.TryParse(e.Value.ToString(), out value))
            {
                // When cell's value more than 2 and less than 4, change fore color to red.
                if (value >= 2 && value <= 4)
                {
                    e.CellStyle.ForeColor = Color.Red;
                }
            }
        }
    }
}
Private Sub gcMultiRow1_CellFormatting(ByVal sender As Object, ByVal e As CellFormattingEventArgs) Handles gcMultiRow1.CellFormatting
    ' Customize cell style in cell formating.
    If e.Scope = CellScope.Row Then
        If e.Value <> Nothing Then
            Dim value As Integer
            If Integer.TryParse(e.Value.ToString(), value) Then
                ' When cell's value more than 2 and less than 4, change fore color to red.
                If value >= 2 AndAlso value <= 4 Then
                    e.CellStyle.ForeColor = Color.Red
                End If
            End If
        End If
    End If
End Sub
参照

GcMultiRow クラス
GcMultiRow メンバ

 

 


© 2008-2015 GrapeCity inc. All rights reserved.