セルごとにマスクや表示書式を変える場合は、セルごとにエディターインスタンスを作成し、そこで指定し分けてください。

private void ultraGrid1_InitializeRow(object sender, Infragistics.Win.UltraWinGrid.InitializeRowEventArgs e)
{
    // 1行目
    if(e.Row.Index == 0)
    {
        DefaultEditorOwnerSettings settings = new DefaultEditorOwnerSettings();
        settings.MaskInput = "#.000";
        settings.Format = "N3";
        DefaultEditorOwner owner = new DefaultEditorOwner(settings);
        EditorWithMask editor = new EditorWithMask(owner);
        e.Row.Cells["Col1"].Editor = editor;
    }
    // 2行目
    else if(e.Row.Index == 1)
    {
        DefaultEditorOwnerSettings settings = new DefaultEditorOwnerSettings();
        settings.MaskInput = "#.0000";
        settings.Format = "N4";
        DefaultEditorOwner owner = new DefaultEditorOwner(settings);
        EditorWithMask editor = new EditorWithMask(owner);
        e.Row.Cells["Col1"].Editor = editor;
    }
}

 

実行結果

 

TIPS

なお、無条件にセルにエディターの新規インスタンスを生成し割り当てるアルゴリズムの場合、画面上に表示されているセルの数が多くなればなるほどエディターのインスタンス数が増えます。また、InitializeRowイベントは、スクロールした場合、等々、かなり頻繁に呼び出されるイベントなので、そのたびにインスタンスの生成をすることになります。

無条件に割り当てるのではなく、一度生成したエディターは何か変数(DictionaryなりListなりArrayなり使いやすいもので構いません)に保存しておき、使いまわすことができるエディターは使いまわすようなアルゴリズムを組むことをお勧めします。

 

サンプル

 

リファレンス

 

Tagged:

製品について

Ultimate UI for Windows Forms