制限で入力できる文字はテキストボックス(入金額)
質問
くらいなので、小テキストボックスが金額よう$546.75を入力できます。現在、確認して欲しいと番号、小数点、ドル記号は、カンマ区切りで入力可のみ3ヶ所(100,000,000).可能ですか?ではないかも容は次のとおりですが、少なくとも数、小数点、ドルのシンボルです。
解決
WPFではなくWinformsを使用していると思います。その場合は、System.Windows.Forms.ErrorProvider(ツールボックスからフォームにドラッグすることができます)と正規表現を使用して検証を行うことができます。
警告:下の正規表現パターンの文字列は、正確にあなたが望むことはないかもしれませんが、うまくいけばアイデアを伝えます。
いくつかの一致例...「$ 4,000.00」、「 - $ 4000.00」、「 - $ 400.00」
private void textBox1_Validating(object sender, CancelEventArgs e)
{
string error = null;
string pattern = @"^\$?\-?([1-9]{1}[0-9]{0,2}(\,\d{3})*(\.\d{0,2})?|[1-9]{1}\d{0,}(\.\d{0,2})?|0(\.\d{0,2})?|(\.\d{1,2}))$|^\-?\$?([1-9]{1}\d{0,2}(\,\d{3})*(\.\d{0,2})?|[1-9]{1}\d{0,}(\.\d{0,2})?|0(\.\d{0,2})?|(\.\d{1,2}))$|^\(\$?([1-9]{1}\d{0,2}(\,\d{3})*(\.\d{0,2})?|[1-9]{1}\d{0,}(\.\d{0,2})?|0(\.\d{0,2})?|(\.\d{1,2}))\)$";
if (!Regex.IsMatch(textBox1.Text, pattern))
{
error = "Please enter a US currency value.";
e.Cancel = true;
}
errorProvider1.SetError((Control)sender, error);
}
他のヒント
なぜだけの記号"$"としているため、海外のテキストボックスを作成ラベルだけでinfrontofテキストボックスしませんので心配もこのキャラクターがいます。でも私の意見).を利用することができるこのコード:
private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
{
if (e.KeyChar != (Char)Keys.Back) //allow backspace (to delete)
{
e.Handled = !char.IsNumber(e.KeyChar);
}
}
すべての検証は、キープレスイベントで手動で実行する必要があります。
ここ 数値値の検証が記述されています。さらに「$」のサインと小数をチェックする必要があります。
// TB-はテキストボックスの名前です
private void tb_PreviewTextInput(object sender, TextCompositionEventArgs e)
{
char[] inputChar = e.Text.ToCharArray();
if (char.IsNumber(inputChar[0]))
{
e.Handled = false;
}
else
{
e.Handled = true;
}
//別の方法。
if (char.IsDigit(inputChar[0]))
{
e.Handled = false;
}
else
{
e.Handled = true;
}
}
Ajax Controlsを試しましたか?
http://www.aspsnippets.com/articles/aspnet-ajax-filteredtextboxextendendentender-contol-example.aspx
シンプル。 :)
所属していません StackOverflow