GrapeCity.Win.MultiRow.v80 アセンブリ > GrapeCity.Win.MultiRow 名前空間 > GcMultiRow クラス : CellFormatting イベント |
Public Event CellFormatting As EventHandler(Of CellFormattingEventArgs)
public event EventHandler<CellFormattingEventArgs> CellFormatting
イベント ハンドラが、このイベントに関連するデータを含む、CellFormattingEventArgs 型の引数を受け取りました。次の CellFormattingEventArgs プロパティには、このイベントの固有の情報が記載されます。
プロパティ | 解説 |
---|---|
CellIndex | 親Section内でのセルのインデックスを取得します。 |
CellName | セルの名前を取得します。 |
CellStyle | 書式設定されるセルのスタイルを取得または設定します。 |
DesiredType | System.Windows.Forms.ConvertEventArgsから継承されます。 |
FormattingApplied | セル値が正常に書式設定されたかどうかを示す値を取得または設定します。 |
RowIndex | イベントが発生したオーナーRowのインデックスを取得します。 |
Scope | イベントが発生したセルの領域を取得します。 |
SectionIndex | イベントが発生したオーナーSectionのインデックスを取得します。 |
Value | System.Windows.Forms.ConvertEventArgsから継承されます。 |
既定では、GcMultiRowコントロールはセルの値を表示に適した書式に変換しようとします。たとえば、テキストボックス型セルでは、数値は表示用の文字列に変換されます。DefaultCellStyleプロパティなどのプロパティによって返されるCellStyleのCellStyle.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.Format、CellStyle.NullValue、CellStyle.DataSourceNullValue、CellStyle.FormatProviderの各プロパティを使用して値が書式設定されます。
CellFormattingEventArgs.FormattingAppliedプロパティの値にかかわらず、セルのレンダリングには、CellFormattingEventArgs.CellStyleプロパティによって返されたオブジェクトの表示プロパティが使用されます。
ユーザー指定の書式設定された値から実際のセル値への変換をカスタマイズするには、CellParsingイベントを処理します。
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