类型为';System.FormatException';发生在mscorlib.dll中,被卡住

本文关键字:dll mscorlib System FormatException 类型 | 更新日期: 2023-09-27 18:26:22

制作一个计算器,尝试并习惯使用Visual studio在C#中进行编码。我快到了,但当我尝试按下两个符号(即**)时,标题中显示了错误消息。如何阻止这种情况发生,并阻止用户输入两个符号?我试过布尔值说falsetrue,但有点卡住了!

namespace Calculator_Assignment
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        Boolean Decimalcick = true;
        Boolean Plusclick = true;
        Boolean Multiplyclick = true;
        Boolean Devisionclick = true;
        Boolean Subtractclick = true; 
        float num, ans;
        int count;
        private void Button_click(object sender, EventArgs e)
        {
            Button button = (Button)sender;          //adds the numbers into the screen when clicked
            Screen.Text = Screen.Text + button.Text;
            Screen.ForeColor = Color.Red; //text that entered appears red
            Decimalcick = true;
            Plusclick = true;
            Multiplyclick = true;
            Devisionclick = true;
            Subtractclick = true;
        }
        private void operatorclick(object sender, EventArgs e)
        {
            Button button = (Button)sender;            //adds the symbols into the screen when clicked
            Screen.Text = Screen.Text + button.Text;  //all symbols are under button_click so i do not have to repeat the code over/
        }
        private void Clearclick(object sender, EventArgs e)
        {
            Screen.Clear(); //when clicked clears the screen
            Result.Clear(); //when clicked clears the result 
            Decimalcick = true;
            Plusclick = true;
            Multiplyclick = true;
            Devisionclick = true;
            Subtractclick = true;
        }
        private void Decimalclick(object sender, EventArgs e)
        {
            Screen.Text = Screen.Text + "."; //adds decimal point to screen when/if clicked 
            Screen.ForeColor = Color.Red; //decimal point appears red
            Decimalcick = false;
            Plusclick = false;
            Multiplyclick = false;
            Devisionclick = false;
            Subtractclick = false;
        }
        private void Closebtn_Click(object sender, EventArgs e)
        {
            this.Close(); // closes the application down 
        }
        private void plusclick(object sender, EventArgs e) //addition
        {
            num = float.Parse(Screen.Text);
            Screen.Clear(); //clears the screen of everything
            Screen.Focus(); //textbox is focused upon when the screen is cleared
            count = 1; //this counts the store case
            Result.Text = num.ToString() + "+"; //this puts the text onto the top text box
            Decimalcick = false;
            Plusclick = false;
            Multiplyclick = false;
            Devisionclick = false;
            Subtractclick = false; 
        }
        private void multiplyclick(object sender, EventArgs e) //multiply 
        {
            num = float.Parse(Screen.Text);
            Screen.Clear(); //clears the screen of everything
            Screen.Focus(); //textbox is focused upon when the screen is cleared
            count = 3; //this counts the store case
            Result.Text = num.ToString() + "*"; //this puts the text onto the top textbox
            Decimalcick = false;
            Plusclick = false;
            Multiplyclick = false;
            Devisionclick = false;
            Subtractclick = false; 
        }
        private void divideclick(object sender, EventArgs e)  //divide
        {
           num = float.Parse(Screen.Text);
           Screen.Clear(); //clears the screen of everything
           Screen.Focus(); //textbox is focused upon when the screen is cleared
           count = 4; //this counts the store case
           Result.Text = num.ToString() + "/"; //this puts the text onto the lab
           Decimalcick = false;
           Plusclick = false;
           Multiplyclick = false;
           Devisionclick = false;
           Subtractclick = false; 
        }
        private void subtractclick(object sender, EventArgs e) //subtract
        {
           num = float.Parse(Screen.Text);
           Screen.Clear(); //clears the screen of everything
           Screen.Focus(); //textbox is focused upon when the screen is cleared
           count = 2; //this counts the store case
           Result.Text = num.ToString() + "-"; //this puts the text onto the label
           Decimalcick = false;
           Plusclick = false;
           Multiplyclick = false;
           Devisionclick = false;
           Subtractclick = false; 
        }
        private void equalsclick(object sender, EventArgs e)
        {
            switch (count) //initalising switch statement 
            {
                case 1:
                     ans = num + float.Parse(Screen.Text);//Adding numbers 
                    Result.Text = ans.ToString();         //this converts my answer from a float to a string
                    break;
                case 2:
                    ans = num - float.Parse(Screen.Text); //Subtracting numbers
                    Result.Text = ans.ToString();         //float to a string 
                    break;
                case 3:
                    ans = num * float.Parse(Screen.Text);  //Multiplying numbers
                    Result.Text = ans.ToString();          //float to a string 
                    break;
                case 4:
                    ans = num / float.Parse(Screen.Text); //Division of numbers
                    Result.Text = ans.ToString();         //float to a string
                    break;
                default:                                  //the default figure
                    break;
            }
        }
    }
}

类型为';System.FormatException';发生在mscorlib.dll中,被卡住

将其添加到每个操作员按钮处理程序:

if("+-/*".Contains(Result.Text[Result.Text.Length - 1])) return;

如果最后一次有效的点击是一个操作符,这将防止任何操作符被点击。