DataGridViewで、ある列は小数点第一位までの入力を許可させ、それ以外の値は認めないという要件を満たす方法です。
ちょっと悩んだんですが、まずfloatにパースできるかどうか判断します。
floatにパースできるようなら、10を掛け、それがintにパースできるかどうか判断します。
パースできないなら、小数点第二位以上の値が入っていることになるので、セルを移動させません。
というのが、以下のコードになります。(C#)
// 不正な場合、入力フォーカスを移動させない(小数点第一位まで可)
float f;
int i;
e.Cancel = (!float.TryParse(val, out f) || !int.TryParse((f * 10).ToString(), out i));
もっといい方法があるのかもしれませんが、これくらいしかスマートなのは思いつきませんでした。