发生错误后我有一个循环的Messagebox,我想知道如何解决它。我试过返回Calculate()方法,我认为这是问题,但我不确定。
namespace WindowsFormsApplication7
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
public int division = 0;
private void Form1_Load(object sender, EventArgs e)
{
}
private decimal Calculate()
{
// This array is to hold the logical operators
string[] allowed = { "+", "-", "*", "/" };
// If the right operator is selceted then perform the action and return result
if (operate.Text == "+")
{
decimal division = Convert.ToDecimal(operand1.Text) + Convert.ToDecimal(operand2.Text);
}
else if (operate.Text == "-")
{
decimal division = Convert.ToDecimal(operand1.Text) - Convert.ToDecimal(operand2.Text);
}
else if (operate.Text == "*")
{
decimal division = Convert.ToDecimal(operand1.Text) * Convert.ToDecimal(operand2.Text);
}
else if (operate.Text == "/")
{
decimal division = (Convert.ToDecimal(operand1.Text) / Convert.ToDecimal(operand2.Text));
}
// if the operator is not something within the array then display message
else if (!allowed.Contains(operate.Text))
{
string msg = string.Format("Not a valid operater {0}Please Enter one of the Following:{0}{1}"
, Environment.NewLine, string.Join(Environment.NewLine, allowed));
MessageBox.Show(msg);
operate.Text = "";
}
return Calculate();
}
答案 0 :(得分:0)
尝试
private decimal Calculate()
{
// This array is to hold the logical operators
string[] allowed = { "+", "-", "*", "/" };
decimal result = 0m;
// If the right operator is selected then perform the action and return result
if (operate.Text == "+")
{
result = Convert.ToDecimal(operand1.Text) + Convert.ToDecimal(operand2.Text);
}
else if (operate.Text == "-")
{
result = Convert.ToDecimal(operand1.Text) - Convert.ToDecimal(operand2.Text);
}
else if (operate.Text == "*")
{
result = Convert.ToDecimal(operand1.Text) * Convert.ToDecimal(operand2.Text);
}
else if (operate.Text == "/")
{
result = (Convert.ToDecimal(operand1.Text) / Convert.ToDecimal(operand2.Text));
}
// if the operator is not something within the array then display message
else if (!allowed.Contains(operate.Text))
{
string msg = string.Format("Not a valid operater {0}Please Enter one of the Following:{0}{1}"
, Environment.NewLine, string.Join(Environment.NewLine, allowed));
MessageBox.Show(msg);
operate.Text = "";
}
return result;
}
答案 1 :(得分:0)
//试试这个
private void button1_Click(object sender, EventArgs e)
{
result.Text = Calculate().ToString();
}
private decimal Calculate() {
decimal division = 0;
// This array is to hold the logical operators
string[] allowed = { "+", "-", "*", "/" };
// If the right operator is selceted then perform the action and return result
if (operate.Text == "+")
{
division = Convert.ToDecimal(operand1.Text) + Convert.ToDecimal(operand2.Text);
}
else if (operate.Text == "-")
{
division = Convert.ToDecimal(operand1.Text) - Convert.ToDecimal(operand2.Text);
}
else if (operate.Text == "*")
{
division = Convert.ToDecimal(operand1.Text) * Convert.ToDecimal(operand2.Text);
}
else if (operate.Text == "/")
{
division = (Convert.ToDecimal(operand1.Text) / Convert.ToDecimal(operand2.Text));
}
// if the operator is not something within the array then display message
else if (!allowed.Contains(operate.Text))
{
string msg = string.Format("Not a valid operater {0}Please Enter one of the Following:{0}{1}"
, Environment.NewLine, string.Join(Environment.NewLine, allowed));
MessageBox.Show(msg);
operate.Text = "";
}
return division;
}
}