1

だから私は$546.75のような金額を入力できる小計テキストボックスを持っています。ここで、数字、小数点以下1桁、1ドル記号、およびコンマのみが3桁(100,000,000)ごとにのみ許可されるようにします。これは可能ですか?おそらくコンマではなく、少なくとも数字、10進数、ドル記号です。

4

6 に答える 6

4

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);
        }
    }
于 2011-09-04T19:06:35.100 に答える
2

すべての検証は、KeyPressイベントで手動で実行する必要があります。

ここでは、数値の検証について説明しました。'$'記号と小数を追加で確認する必要があります。

于 2011-09-04T18:57:49.307 に答える
1

数値テキストボックスに関する記事はたくさんあります

数値テキストボックス

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

于 2011-09-04T18:59:04.410 に答える
1

//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;
        }
    }
于 2012-12-03T11:39:44.963 に答える
1

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);
    }
于 2011-09-04T20:04:19.997 に答える
0

Ajax Controlsを試しましたか?

http://www.aspsnippets.com/Articles/ASPNet-AJAX-FilteredTextBoxExtender-Control-Example.aspx

シンプル。:)

于 2015-12-15T07:07:33.697 に答える