-1

我正在尝试测试 my 的内容textBox是否等于零,我有两个textBox具有相同的值。我想确保用户不能继续,除非我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

文本框的 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;
}

如果转换未通过,则不会测试第二个条件(数量 <= 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 = 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 回答
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 回答