-2

ユーザーの入力を確認するために作成した TryParse メソッドについて、別の質問があります。追加の質問で申し訳ありませんが、別の合併症に遭遇し、それについてさらに支援が必要だったので、最後の質問がかなり古いため、別の質問を作成しました. 最後の質問に投稿すると、誰もこの質問を見ていないのではないかと心配していました。

エラーはありませんが、ユーザーの入力内容をテストするために実行しようとすると、入力したすべての整数、小数 (1.00、1.0、1,000.0) を含め、とにかく Messagebox.Show が表示されます。ここに私が作成したものがあります:

    {
        // Arrange the variables to the correct TextBox.
        decimal Medical;

        if (!decimal.TryParse(ChargeLabel.Text, out Medical))
        {
            MessageBox.Show("Please enter a decimal number.");
        }
        decimal Surgical;
        if (!decimal.TryParse(ChargeLabel.Text, out Surgical))
        {
            MessageBox.Show("Please enter a decimal number.");
        }
        decimal Lab;
        if (!decimal.TryParse(ChargeLabel.Text, out Lab))
        {
            MessageBox.Show("Please enter a decimal number.");
        }
        decimal Rehab;
        if (!decimal.TryParse(ChargeLabel.Text, out Rehab))
        {
            MessageBox.Show("Please enter a decimal number.");
        }

        // Find the cost of Miscs by adding the Misc Costs together.
        decimal MiscCharges = Medical + Surgical + Lab + Rehab;
        ChargeLabel.Text = MiscCharges.ToString("c");

つまり、Medical、Surgical、Lab、Rehab のテキスト ボックスに任意の形式の数字を入力しようとしても、同じ MessageBox が表示されます。アプリケーションがユーザーの入力を正しくチェックできるようにする方法について誰か助けてくれませんか? ありがとう、そしてまたごめんなさい。

4

2 に答える 2

1

各解析ステートメントで同じラベルを使用しています。

decimal.TryParse(ChargeLabel.Text, out Medical)
decimal.TryParse(ChargeLabel.Text, out Surgical)
decimal.TryParse(ChargeLabel.Text, out Lab)
decimal.TryParse(ChargeLabel.Text, out Rehab)

編集各行にブレークポイントを配置してMessageBox.Showから、解析している文字列値を確認することをお勧めします。

表示されるメッセージで詳細情報を提供することもできます。

decimal Rehab;
if (!decimal.TryParse(ChargeLabel.Text, out Rehab))
{
    MessageBox.Show(string.Format("Unable to parse '{0}' as a decimal number.", ChargeLabel.Text));
}
于 2013-03-17T18:51:02.317 に答える
1

カルチャに適した形式で数値を入力していることを確認してください。区切り記号としてカンマを使用する文化もあれば、ドットを使用する文化もあります。「123,4」と「123.4」を試してください

于 2013-03-17T18:51:59.507 に答える