【问题标题】:C# Looping Messagebox for Exception异常的 C# 循环消息框
【发布时间】:2016-04-12 19:14:38
【问题描述】:

循环消息框!!

发生错误后我有一个循环消息框,我想知道如何修复它。我尝试返回 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();
        }

【问题讨论】:

  • 您需要在方法顶部声明 division 并在底部返回。
  • return Calculate(); 永远递归调用函数,

标签: c# loops methods messagebox


【解决方案1】:

试试

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;

}

【讨论】:

    【解决方案2】:

    // 试试这个

            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;
            }
    
        }
    

    【讨论】:

      猜你喜欢
      • 2017-04-29
      • 1970-01-01
      • 1970-01-01
      • 2011-01-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-30
      • 1970-01-01
      相关资源
      最近更新 更多