ゲッター/セッターで、入力を特定のデータ型、長さなどに制限する属性を使用したことを覚えています。IE[何かを属性付け]。
何か案は?
ありがとう
これを行う1つの方法(標準のテキストボックスを引き続き使用する場合)は、テキストボックスのテキスト変更イベントのイベントを作成することです。その中で、テキストを読んで、数字のみが含まれていることを確認します(およびダブルの場合のオプションの期間)
ValidateInput
で利用可能な属性を意味しましたSystem.Web.Mvc
か?
MaskedTextBox
また、 WinFormsを実行している場合は、おそらくを使用できます。
Winforms?マスクされたテキストボックスコントロールの使用を検討しましたか?
http://msdn.microsoft.com/en-us/library/system.windows.forms.maskedtextbox.aspx
Winforms?NumericUpDownを使用してみませんか?
http://msdn.microsoft.com/en-us/library/57dy4d56.aspx
http://msdn.microsoft.com/en-us/library/system.windows.forms.numericupdown.aspx
科学的記数法が必要な場合は、次のことができます。
private void textBox1_KeyDown(object sender, KeyEventArgs e)
{
TextBox tBox = (TextBox)sender;
if (!((e.KeyCode >= Keys.D0 && e.KeyCode <= Keys.D9)
|| (e.KeyCode >= Keys.NumPad0 && e.KeyCode <= Keys.NumPad9)
|| (e.KeyCode == Keys.Decimal && !(tBox.Text.Contains('.'))
&& !(tBox.Text.Length == 0)
&& !((tBox.Text.Length == 1)
&& (tBox.Text.Contains('-') || tBox.Text.Contains('+'))))
|| (e.KeyCode == Keys.OemPeriod && !(tBox.Text.Contains('.'))
&& !(tBox.Text.Length == 0)
&& !((tBox.Text.Length == 1)
&& (tBox.Text.Contains('-') || tBox.Text.Contains('+'))))
|| (e.KeyCode == Keys.Subtract && ((tBox.Text.Length == 0) ||
tBox.Text.EndsWith("e") || tBox.Text.EndsWith("E")))
|| (e.KeyCode == Keys.OemMinus && ((tBox.Text.Length == 0) ||
tBox.Text.EndsWith("e") || tBox.Text.EndsWith("E")))
|| (e.KeyCode == Keys.Add && ((tBox.Text.Length == 0) ||
tBox.Text.EndsWith("e") || tBox.Text.EndsWith("E")))
|| (e.KeyCode == Keys.Oemplus && ((tBox.Text.Length == 0) ||
tBox.Text.EndsWith("e") || tBox.Text.EndsWith("E")))
|| e.KeyCode == Keys.Delete
|| e.KeyCode == Keys.Back
|| e.KeyCode == Keys.Left
|| e.KeyCode == Keys.Right
|| (e.KeyCode == Keys.E) && !(tBox.Text.Contains('e')) &&
(tBox.Text.Contains('.') && !tBox.Text.EndsWith("."))))
{
e.SuppressKeyPress = true;
}
}
これにより、数値と一致しないパターンの入力が拒否されます。e
マイナス記号は、文字列の先頭(負の数を示すため)およびまたはの後E
に負の指数を示す場合にのみ許可されます。プラス記号はマイナスと同じ規則に従います。小数点は1つだけ許可され、少なくとも1つの数値の後に続く必要があります。またはは1つだけe
許可E
されており、小数点の後に続き、小数点の後に少なくとも1つの数字が続く必要があります。
プログラム機能の他の側面に干渉する場合は、、、などのキーをHelp
許可することもできます。Tab
これは不完全な数字を防ぐものではないことに注意してください(つまり1.37E-
、または-13.
が入力されるのを防ぐことはできないので、どのような場合でも文字列をチェックする必要があります。これにより、少なくともすぐに無効なエントリは拒否されます。
(同じハンドラーで、他のロジックの前に)次のようなことを行うことができます。
if (e.KeyCode == Keys.Enter)
{
textBox1_Validating(sender, new CancelEventArgs());
return;
}
上記は、Enterキーに入力(強制検証)の通常の「感触」を与えるだけです。テキストボックスを離れる(フォーカスが外れる)と、次のようなことを行う可能性のある検証もトリガーされます。
private void textBox1_Validating(object sender, CancelEventArgs e)
{
TextBox tBox = (TextBox)sender;
double tstDbl;
if (!double.TryParse(tBox.Text, out tstDbl))
{
//handle bad input
}
else
{
//double value OK
doSomething(tstDbl);
}
}