Copyright © GrapeCity inc. All rights reserved.
True DBGrid for WinForms
カスタムイベントハンドラを使って書式設定する
データ表示テクニック > テキストの書式設定 > カスタムイベントハンドラを使って書式設定する

既存の書式設定オプションが個別の目的に合わない場合があります。また、使用できる書式設定の種類に制限があったり、カスタムの書式設定オプションが必要な場合もあります。このような場合に、NumberFormat プロパティに FormatText Event オプションを指定します。列でこのオプションを選択すると、その列にデータが表示される前に、FormatText イベントが発生します。このイベントによって、データを表示する直前に、書式設定の再実行、変換、インデントなどの任意の処理をデータに対して実行できます。

Visual Basic コードの書き方

Visual Basic
コードのコピー
Private Sub C1TrueDBGrid1_FormatText(ByVal sender As Object, ByVal e As C1.Win.C1TrueDBGrid.FormatTextArgs) Handles C1TrueDBGrid1.FormatText
 
End Sub

C# コードの書き方

C#
コードのコピー
private void C1TrueDBGrid1_FormatText(object sender, C1.Win.C1TrueDBGrid.FormatTextArgs e)
{
 
}

ColIndex は、FormatTextEventArgs オブジェクトのメンバの1つで、書式設定し直すグリッドの列番号を指定します。また、Valueメンバは、データの現在の値を含み、書式設定された表示値のプレースホルダにもなります。たとえば、最初の列に1から 30 までの数値が含まれており、それらのデータをローマ数字で表示する場合は、次のようなコードを記述します。

Visual Basic コードの書き方

Visual Basic
コードのコピー
Private Sub C1TrueDBGrid1_FormatText(ByVal sender As Object, ByVal e As C1.Win.C1TrueDBGrid.FormatTextEventArgs) Handles C1TrueDBGrid1.FormatText
 
    Dim result As String
 
    If e.ColIndex = 0 Then
 
        ' X の個数を決定します
        While e.Value >= 10
            result = result & "X"
            e.Value = e.Value - 10
        End While
 
        '  1 〜 9 の「数字」を追加します
        Select Case e.Value
            Case 1
                result = result & "I"
            Case 2
                result = result & "II"
            Case 3
                result = result & "III"
            Case 4
                result = result & "IV"
            Case 5
                result = result & "V"
            Case 6
                result = result & "VI"
            Case 7
                result = result & "VII"
            Case 8
                result = result & "VIII"
            Case 9
                result = result & "IX"
        End Select
 
        ' 実際の書式を変更します
        e.Value = result
    End If
End Sub

C# コードの書き方

C#
コードのコピー
private void C1TrueDBGrid1_FormatText(object sender, C1.Win.C1TrueDBGrid.FormatTextEventArgs e)
 
    string result;
 
    if ( e.ColIndex = 0 ) 
    {
        //X の個数を決定します
        while ( e.Value >= 10 )
        {
            result = result + "X";
            e.Value = e.Value - 10;
        }
 
        // 1 〜 9 の「数字」を追加します
        switch (e.Value) 
        {
            case 1;
                result = result + "I";
            case 2;
                result = result + "II";
            case 3;
                result = result + "III";
            case 4;
                result = result + "IV";
            case 5;
                result = result + "V";
            case 6;
                result = result + "VI";
            case 7;
                result = result + "VII";
            case 8;
                result = result + "VIII";
            case 9;
                result = result + "IX";
        }
 
        //実際の書式を変更します
        e.Value = result;
    }
}

FormatText イベントは、他の書式設定テクニックに比べて制限が少なく、このイベントを使用すれば、グリッドに表示される値のテキストを自由に制御できます。

関連トピック