セルごとにマスクや表示書式を変える場合は、セルごとにエディターインスタンスを作成し、そこで指定し分けてください。
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なり使いやすいもので構いません)に保存しておき、使いまわすことができるエディターは使いまわすようなアルゴリズムを組むことをお勧めします。
サンプル
リファレンス
- 個別セルで異なるエディタを使用