Ejemplo n.º 1
0
        private void bt_oper_click(object sender, MouseEventArgs e)
        {
            Button btn = sender as Button;

            if (calculator.IsNumber(buff))  //연산자 전에 피연산자 일 경우
            {
                calculator.AddOper(buff);
                calculator.AddOper(btn.Text);
                output       += btn.Text;
                textBox1.Text = output;
            }
            else if (btn.Text != ")" && btn.Text != "(")  //괄호가 아닌 연산자를 입력 받았을 때
            {
                if (calculator.Expression[0] == null)
                {                                   //입력창 처음에 연산자를 입력하려 할 때
                    if (btn.Text == "-")            // '-' 를 입력받은 경우
                    {
                        buff         += btn.Text;
                        output       += btn.Text;
                        textBox1.Text = output;
                        return;
                    }
                    else                            // '-'를 제외한 연산자일 경우 자동으로 0을 추가함
                    {
                        buff = "0";
                        calculator.AddOper(buff);
                        calculator.AddOper(btn.Text);
                        output        = "0" + btn.Text;
                        textBox1.Text = output;
                    }
                }
                else                                                            //연산자 선택했다가 또 연산자를 선택했을 경우
                {
                    if (calculator.IsNumber(calculator.ShowStringLastSecond())) //입력하려는 연산자 전에도 연산자가 아닐 경우만 최근에 누른 연산자로 바꿈
                    {
                        calculator.DelOper();
                        calculator.AddOper(btn.Text);
                        output        = textBox1.Text.Substring(0, textBox1.Text.Length - 1); //기존 연산자를 제거해서 저장
                        output       += btn.Text;
                        textBox1.Text = output;
                    }
                    else if (calculator.ShowStringLast() == ")")       //닫힌괄호일 경우
                    {
                        calculator.AddOper(btn.Text);
                        output       += btn.Text;
                        textBox1.Text = output;
                    }
                }
            }
            else                                                       //괄호일 경우
            {
                if (!calculator.IsNumber(calculator.ShowStringLast())) //그 전 문자가 숫자가 아닐 경우만 넣음
                {
                    calculator.AddOper(btn.Text);
                    output       += btn.Text;
                    textBox1.Text = output;
                }
            }
            buff = "";
        }