-1

my の内容がtextBoxゼロに等しいかどうかをテストしようとしtextBoxています。同じ値を持つものが 2 つあります。私のいずれかがtextBoxゼロに等しい場合を除いて、ユーザーが続行できないようにしたいと考えています。いくつかの手段を試しましたが、うまくいきませんでした。私はこれを試しました:

double amount;
amount = double.Parse(transactDisplay.Text.ToString());
if (amount > 0)
{
    MessageBox.Show("Please pay before proceding", "Money not paid",
                                    MessageBoxButtons.OK, MessageBoxIcon.Stop);

}

しかし、それは機能していません。

4

5 に答える 5

3

Textbox の Text プロパティは文字列を返すため、それが数値であることを確認して変換を試みる必要があります。次のようなものを使用できます。

double amount;
if (double.TryParse(transactDisplay.Text.Trim(), out amount) && amount <= 0)
{
    MessageBox.Show("Please pay before proceding", "Money not paid", MessageBoxButtons.OK, MessageBoxIcon.Stop);
    return;
}
else 
{
   MessageBox.Show("Please add amount greater than 0.", "Money not paid", MessageBoxButtons.OK, MessageBoxIcon.Stop);
   return;
}

変換が成功しなかった場合、2 番目の条件 (金額 <= 0) はテストされません。

于 2012-05-10T11:50:33.460 に答える
1

数字のみを扱う場合は、NumericUpDown コントロールを使用して、ユーザーが誤って文字を入力できないようにする必要があります。NumericUpDown コントロールにもDecimalPlacesプロパティがあるため、ほとんどのシナリオに適合します。

private void button1_Click(object sender, EventArgs e)
{
    if (ValueNotZero(numericUpDown1) && ValueNotZero(numericUpDown2))
        MessageBox.Show("You forgot to pay!");
    else if (!ValueNotZero(numericUpDown1) && !ValueNotZero(numericUpDown2))
        MessageBox.Show("One of the values must not be Zero!");
}

private bool ValueNotZero(NumericUpDown numericControl)
{
    return (double)numericControl.Value > 0;
}
于 2012-05-10T12:01:15.330 に答える
0

これを試して:

double amount;
if (double.TryParse(transactDisplay.Text, out amount) && amount > 0) {
    MessageBox.Show("Please pay before proceding", "Money not paid",
                    MessageBoxButtons.OK, MessageBoxIcon.Stop);
}
于 2012-05-10T11:50:39.310 に答える
0

最良の方法は、コントロールの値をテストできるように設計された検証イベントを使用することです。

http://msdn.microsoft.com/en-us/library/system.windows.forms.control.validating.aspx

ErrorProvider を使用してエラー メッセージを表示することもできます: http://msdn.microsoft.com/fr-fr/library/95ysxkwy%28v=vs.80%29.aspx

于 2012-05-10T11:48:01.627 に答える
0
double amount = double.Parse(transactDisplay.Text); 
if (amount != 0) 
{ 
    MessageBox.Show("Please pay before proceding", "Money not paid", 
    MessageBoxButtons.OK, MessageBoxIcon.Stop); 
} 

ゼロでない場合は、メッセージにフラグを立てます。

于 2012-05-10T11:49:55.640 に答える