GrapeCity.Win.CalendarGrid.v20 アセンブリ > GrapeCity.Win.CalendarGrid 名前空間 > GcCalendarGrid クラス : CellFormatting イベント |
Public Event CellFormatting As EventHandler(Of CalendarCellFormattingEventArgs)
public event EventHandler<CalendarCellFormattingEventArgs> 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 イベントを処理します。
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