PowerTools CalendarGrid for Windows Forms 1.0J
CellFormatting イベント
使用例 

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

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

プロパティ解説
CellPosition関連する CalendarCell の位置を取得します。 GrapeCity.Win.CalendarGrid.CalendarCellEventArgsから継承されます。
CellStyle書式設定されるセルスタイルを取得または設定します。  
DesiredType書式設定する値に必要な型を取得します。  
Value書式設定するセルの書式設定された内容を取得します。  
解説

既定では、GcCalendarGrid コントロールはセルの値を表示に適した書式に変換しようとします。たとえば、TextBox 型セルでは、数値は表示用の文字列に変換されます。

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

CellFormatting イベントを処理するとき、CalendarCellFormattingEventArgs.Value プロパティはセル値で初期化されます。セル値から表示値へのカスタムの変換を提供する場合は、CalendarCellFormattingEventArgs.Value プロパティを変換後の値に設定します。このとき、新しい値の型は必ず CalendarCellFormattingEventArgs.DesiredType プロパティで指定された型にします。

イベントハンドラが完了したとき、CalendarCellFormattingEventArgs.Value が null 参照 (Visual Basicでは Nothing) であるか適切な型でない場合は、セルスタイルの CalendarCellStyle.NullValue および CalendarCellStyle.DataSourceNullValue プロパティを使用して値が書式設定されます。このセルスタイルは CalendarCellFormattingEventArgs.CellStyle プロパティによって返されます。

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

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

使用例
次のサンプルコードは、セルの書式設定を処理する方法を示します。このサンプルコードは、GcCalendarGrid.DataSource プロパティに示されている詳細なコード例の一部を抜粋したものです。
void gcCalendarGrid_CellFormatting(object sender, CalendarCellFormattingEventArgs e)
{
    if (e.CellPosition.Scope != CalendarTableScope.Content)
    {
        return;
    }
    if (e.CellPosition.RowIndex == 2 && e.CellPosition.ColumnIndex == 1)//Gender
    {
        if (object.Equals(e.Value, 0))
        {
            e.Value = "Male";
        }
        else if (object.Equals(e.Value, 1))
        {
            e.Value = "Female";
        }
    }
    else if (e.CellPosition.RowIndex == 3 && e.CellPosition.ColumnIndex == 1)//Amount
    {
        if (e.Value != null)
        {
            e.Value = e.Value.ToString() + " USD";
            e.CellStyle.BackColor = SystemColors.Info;
            e.CellStyle.ForeColor = SystemColors.InfoText;
        }
    }
    else if (e.CellPosition.RowIndex == 4 && e.CellPosition.ColumnIndex == 1)//Got Bonus
    {
        if (e.Value != null)
        {
            if (object.Equals(e.Value, 0))
            {
                e.Value = false;
            }
            else if (object.Equals(e.Value, 1))
            {
                e.Value = true;
            }
        }
    }
}
Private Sub gcCalendarGrid_CellFormatting(sender As Object, e As CalendarCellFormattingEventArgs)
    If e.CellPosition.Scope <> CalendarTableScope.Content Then
        Return
    End If
    If e.CellPosition.RowIndex = 2 AndAlso e.CellPosition.ColumnIndex = 1 Then
        'Gender
        If Object.Equals(e.Value, 0) Then
            e.Value = "Male"
        ElseIf Object.Equals(e.Value, 1) Then
            e.Value = "Female"
        End If
    ElseIf e.CellPosition.RowIndex = 3 AndAlso e.CellPosition.ColumnIndex = 1 Then
        'Amount
        If e.Value IsNot Nothing Then
            e.Value = e.Value.ToString() + " USD"
            e.CellStyle.BackColor = SystemColors.Info
            e.CellStyle.ForeColor = SystemColors.InfoText
        End If
    ElseIf e.CellPosition.RowIndex = 4 AndAlso e.CellPosition.ColumnIndex = 1 Then
        'Got Bonus
        If e.Value IsNot Nothing Then
            If Object.Equals(e.Value, 0) Then
                e.Value = False
            ElseIf Object.Equals(e.Value, 1) Then
                e.Value = True
            End If
        End If
    End If
End Sub
参照

GcCalendarGrid クラス
GcCalendarGrid メンバ
CellParsing イベント

 

 


© 2014 GrapeCity inc. All rights reserved.