0

入力された最大数に基づいて乱数を生成する単純な WinForms アプリがあります。最大数のテキストボックスについては、「キープレス」入力をチェックして数字と「。」をチェックするコードが既にあります。文字入力のみです。したがって、10 進数が許可されます。ただし、テキスト ボックスに 0 と "." だけが含まれていないことも確認したいと思います。私のコードの概要を以下に示します。

            if(txbInput.Text.Length == 0)
        {
            validation fails
        }

        else if(txbInput Contains just 0s and .)
        {
            validation also fails
        }

        else{
            do maths
        }

「else if」ステートメントでこれを行う正しい方法は何ですか?

4

3 に答える 3

10

代わりにDecimal.TryParseorを使用しないのはなぜですか。Double.TryParse

decimal d;
if(!decimal.TryParse(txbInput.Text, out d))
{
    // validation fails, output an appropriate message to the user
}
else if (d == 0m)
{
    // validation fails, output an appropriate message to the user
}
于 2013-11-13T11:39:26.770 に答える
1

TextBox の代わりにNumericUpDownコントロールを使用してみてください。これにより、 Valueプロパティをゼロと比較することを除いて、コードの検証と解析が不要になります。
注意: このコントロールを使用して実数を編集するには、プロパティDecimalPlacesおよびIncrementに適切な値を設定します。

于 2013-11-14T10:47:10.390 に答える
0

そのために KeyPressEvent を使用できます...のように

 private void tb1_KeyPressed(object o,KeyPressEvents e)
 {
     if(/*insert your validation here*/)
     {//valid case
       e.Handled=false;
     }
     else
     {//false case
       e.Handled=true;
       //inform user about mistake
     }
 }

Handled =true を設定すると、キーが押された後に何も起こりません。それにより、テキストボックス内のキーを抑制することができます

于 2015-05-11T20:17:32.620 に答える