だから私は$546.75のような金額を入力できる小計テキストボックスを持っています。ここで、数字、小数点以下1桁、1ドル記号、およびコンマのみが3桁(100,000,000)ごとにのみ許可されるようにします。これは可能ですか?おそらくコンマではなく、少なくとも数字、10進数、ドル記号です。
6 に答える
textBoxの外側に金記号「$」を付けない(textBoxの直前にラベルを作成する)理由は、この文字について心配する必要はなく、数字だけについて心配する必要があります。そしてそれは(私の意見では)良く見えます。次に、次のコードを使用できます。
private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
{
if (e.KeyChar != (Char)Keys.Back) //allow backspace (to delete)
{
e.Handled = !char.IsNumber(e.KeyChar);
}
}
すべての検証は、KeyPressイベントで手動で実行する必要があります。
ここでは、数値の検証について説明しました。'$'記号と小数を追加で確認する必要があります。
数値テキストボックスに関する記事はたくさんあります
http://www.daniweb.com/software-development/csharp/threads/95153
http://www.codeproject.com/KB/vb/NumericTextBox.aspx
私はこれを私のプロジェクトで使用しています
http://www.codeproject.com/KB/edit/ValidatingTextBoxControls.aspx
//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;
}
}
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);
}
Ajax Controlsを試しましたか?
http://www.aspsnippets.com/Articles/ASPNet-AJAX-FilteredTextBoxExtender-Control-Example.aspx
シンプル。:)