KeyPress は、この種の検証を行うには十分ではありません。これを回避する簡単な方法は、Ctrl+V を使用してテキスト ボックスにテキストを貼り付けることです。またはコンテキストメニュー、キーイベントはまったくありません。
この特定のケースでは、TextChanged イベントがジョブを完了します。
private void textBox_TextChanged(object sender, EventArgs e) {
var box = (TextBox)sender;
if (box.Text.StartsWith(".")) box.Text = "";
}
しかし、数値の検証にはさらに多くのことがあります。1.1.1 や 1.-2 なども拒否する必要があります。代わりに Validating イベントを使用してください。フォームに ErrorProvider をドロップし、次のようにイベントを実装します。
private void textBox_Validating(object sender, CancelEventArgs e) {
var box = (TextBox)sender;
decimal value;
if (decimal.TryParse(box.Text, out value)) errorProvider1.SetError(box, "");
else {
e.Cancel = true;
box.SelectAll();
errorProvider1.SetError(box, "Invalid number");
}
}