3流プログラマのメモ書き

元開発職→現社内SEの三流プログラマのIT技術メモ書き。 このメモが忘れっぽい自分とググってきた技術者の役に立ってくれれば幸いです。(jehupc.exblog.jpから移転中)

(.Net)小数点第一位まで入力可という入力チェック

DataGridViewで、ある列は小数点第一位までの入力を許可させ、それ以外の値は認めないという要件を満たす方法です。

ちょっと悩んだんですが、まずfloatにパースできるかどうか判断します。

floatにパースできるようなら、10を掛け、それがintにパースできるかどうか判断します。

パースできないなら、小数点第二位以上の値が入っていることになるので、セルを移動させません。

というのが、以下のコードになります。(C#)

// 不正な場合、入力フォーカスを移動させない(小数点第一位まで可)

float f;

int i;

e.Cancel = (!float.TryParse(val, out f) || !int.TryParse((f * 10).ToString(), out i));

もっといい方法があるのかもしれませんが、これくらいしかスマートなのは思いつきませんでした。