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

セルの値が変更された場合に、セルの編集モードが終了すると発生します。
構文
イベント データ

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

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

標準変換では要件が満たされない場合は、CellParsing イベントを処理して、必要な型への値のカスタム変換を提供します。

ユーザーは EditMode プロパティによって指定された方法を使用して編集モードに入ることができます。別のセルに移動するか[Enter]キーを押すと、編集モードが終了してセルの変更がコミットされます。[Esc]キーを押すと、変更結果がコミット前の値に戻り、CellParsing イベントは発生しません。CellParsing イベントは、セル値が実際に変更された場合にのみ発生します(最終的な値が元の値と同じ場合でも発生します)。また、CommitEdit メソッドが呼び出されたときにも発生します。

CellParsing イベントを処理するとき、値を独自に変換するか、既定の変換をカスタマイズできます。また、CalendarCellParsingEventArgs.CellStyle プロパティによって返されたオブジェクトの CalendarCellStyle.NullValue および CalendarCellStyle.DataSourceNullValue プロパティを変更したうえで、既定の型コンバータで値を解析することもできます。

値を独自に変換する場合は、CalendarCellParsingEventArgs.Value プロパティの初期の書式設定値を、CalendarCellParsingEventArgs.DesiredType プロパティで指定された型の変換値に置き換えます。

イベントハンドラが完了したとき、CalendarCellParsingEventArgs.Value が null 参照 (Visual Basicでは Nothing) であるか適切な型でない場合は、既定の型コンバータを使用して値が解析されます。このメソッドの既定の実装では、渡されたセルスタイルの CalendarCellStyle.NullValue および CalendarCellStyle.DataSourceNullValue プロパティを使用して値が解析されます。

表示用の書式設定された値へのセル値の変換をカスタマイズするには、CellFormatting イベントを処理します。

使用例
次のサンプルコードは、セルの解析を処理する方法を示します。このサンプルコードは、GcCalendarGrid.DataSource プロパティに示されている詳細なコード例の一部を抜粋したものです。
void gcCalendarGrid_CellParsing(object sender, CalendarCellParsingEventArgs e)
{
    if (e.CellPosition.Scope != CalendarTableScope.Content)
    {
        return;
    }
    if (e.CellPosition.RowIndex == 4 && e.CellPosition.ColumnIndex == 1)//Got Bonus
    {
        if (e.Value != null && e.Value.GetType() == typeof(bool) && e.DesiredType == typeof(int))
        {
            if (object.Equals(e.Value, true))
            {
                e.Value = 1;
            }
            else if (object.Equals(e.Value, false))
            {
                e.Value = 0;
            }
        }
    }
}
Private Sub gcCalendarGrid_CellParsing(sender As Object, e As CalendarCellParsingEventArgs)
    If e.CellPosition.Scope <> CalendarTableScope.Content Then
        Return
    End If
    If e.CellPosition.RowIndex = 4 AndAlso e.CellPosition.ColumnIndex = 1 Then
        'Got Bonus
        If e.Value IsNot Nothing AndAlso e.Value.[GetType]().Equals(GetType(Boolean)) AndAlso e.DesiredType.Equals(GetType(Integer)) Then
            If Object.Equals(e.Value, True) Then
                e.Value = 1
            ElseIf Object.Equals(e.Value, False) Then
                e.Value = 0
            End If
        End If
    End If
End Sub
参照

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

 

 


© 2014 GrapeCity inc. All rights reserved.