我试图测试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);
}
但它不起作用。
答案 0 :(得分: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;
}
如果转换未通过,则不会测试第二个条件(金额<= 0)。
答案 1 :(得分: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;
}
答案 2 :(得分: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
答案 3 :(得分:0)
double amount = double.Parse(transactDisplay.Text);
if (amount != 0)
{
MessageBox.Show("Please pay before proceding", "Money not paid",
MessageBoxButtons.OK, MessageBoxIcon.Stop);
}
如果它不等于零,则标记该消息。
答案 4 :(得分: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);
}