1

ユーザーが複数の小数点以下を入力するのを止めるために、世界でどのようにトライアンドキャッチを設定しますか。トライアンドキャッチですか?または、私はここで何をしたいですか?Windows フォーム アプリケーションに非常に慣れていない....

また、注意すべき点があります...計算をクリックすると数字が消えます..そこに継続的にとどまりません。変だと思いました。誰かが理由を知っていますか?たとえば、6 + 6 を押すと、6 + 6 = 12 の表示ではなく、「6」、次に別の「6」、次に 12 が表示されます。

編集:これは更新されたコードです。コードを継続的に作成する方法をまだ理解していないことを除いて、すべてを持っています。私が立ち往生しているので、どんな提案も歓迎します...

public partial class Form1 : Form
{
    char c;
    double num1;
    double num2;

    public Form1()
    {
        InitializeComponent();
    }
    private void btn0_Click(object sender, EventArgs e)
    {
        txtBox.Text += 0;
    }
    private void btn1_Click(object sender, EventArgs e)
    {
        txtBox.Text += 1;
    }
    private void btn2_Click(object sender, EventArgs e)
    {
        txtBox.Text += 2;
    }
    private void btn3_Click(object sender, EventArgs e)
    {
        txtBox.Text += 3;
    }
    private void btn4_Click(object sender, EventArgs e)
    {
        txtBox.Text += 4;
    }
    private void btn5_Click(object sender, EventArgs e)
    {
        txtBox.Text += 5;
    }
    private void btn6_Click(object sender, EventArgs e)
    {
        txtBox.Text += 6;
    }
    private void btn7_Click(object sender, EventArgs e)
    {
        txtBox.Text += 7;
    }
    private void btn8_Click(object sender, EventArgs e)
    {
        txtBox.Text += 8;
    }
    private void btn9_Click(object sender, EventArgs e)
    {
        txtBox.Text += 9;
    }
    private void btnDecimal_Click(object sender, EventArgs e)
    {
        if (!txtBox.Text.Contains("."))
            txtBox.Text += ".";
    }
    private void btnAddition_Click(object sender, EventArgs e)
    {
        c = '+';
        num1 = double.Parse(txtBox.Text);
        txtBox.Text = string.Empty;
    }
    private void btnSubtraction_Click(object sender, EventArgs e)
    {
        c = '-';
        num1 = double.Parse(txtBox.Text);
        txtBox.Text = string.Empty;
    }
    private void btnMultiplication_Click(object sender, EventArgs e)
    {
        c = '*';
        num1 = double.Parse(txtBox.Text);
        txtBox.Text = string.Empty;
    }
    private void btnDivision_Click(object sender, EventArgs e)
    {
        c = '/';
        num1 = double.Parse(txtBox.Text);
        txtBox.Text = string.Empty;
    }
    private void btnClear_Click(object sender, EventArgs e)
    {
        txtBox.Clear();
    }
    private void btnEqual_Click(object sender, EventArgs e)
    {
        num2 = double.Parse(txtBox.Text);
        double result;
        switch (c)
        {
            case '+':
                result = num1 + num2;
                txtBox.Text = result.ToString();
                break;
            case '-':
                result = num1 - num2;
                txtBox.Text = result.ToString();
                break;
            case '/':
                 if (num2!= 0) 
                {
                    result = num1 / num2;
                    txtBox.Text = result.ToString();
                } 
                else 
                {
                    txtBox.Text = "You can't divide by zero... sign up for Math 100 please =)";
                } 
                break; 
            case '*':
                result = num1 * num2;
                txtBox.Text = result.ToString();
                break;
        }
    }
}

}

4

2 に答える 2

3

まず、try catch ステートメントは必要ありません。try catch ステートメントは例外処理用です。

それをクリアした後、必要なのは、現在の入力をメモリに保持して画面に表示する数値に追加する単一のメソッドです。変更することがたくさんあるのでコードは示しませんが、基本的には電卓の例を見る必要があります

于 2013-09-01T05:45:09.693 に答える
2

はい、例外処理のためにTry catchブロックする必要はありません。コードを変更する必要があるので、これを試してみてください........

using System; 
using System.Collections.Generic; 
using System.ComponentModel; 
using System.Data; 
using System.Drawing; 
using System.Linq; 
using System.Text; 
using System.Windows.Forms; 

namespace SimpleCalculator 
{ 
    public partial class frmCalculator : Form 
    { 
        string operand1 = string.Empty; 
        string operand2 = string.Empty; 
        string result; 
        char operation; 

        public frmCalculator() 
        { 
            InitializeComponent(); 
        } 

        private void frmCalculator_Load(object sender, EventArgs e) 
        { 
            btnOne.Click += new EventHandler(btn_Click); 
            btnTwo.Click += new EventHandler(btn_Click); 
            btnThree.Click += new EventHandler(btn_Click); 
            btnFour.Click += new EventHandler(btn_Click); 
            btnFive.Click += new EventHandler(btn_Click); 
            btnSix.Click += new EventHandler(btn_Click); 
            btnSeven.Click += new EventHandler(btn_Click); 
            btnEight.Click += new EventHandler(btn_Click); 
            btnNine.Click += new EventHandler(btn_Click); 
            btnZero.Click += new EventHandler(btn_Click); 
            btnDot.Click += new EventHandler(btn_Click); 
        } 

        void btn_Click(object sender, EventArgs e) 
        { 
            try 
            { 
                Button btn = sender as Button; 

                switch (btn.Name) 
                { 
                    case "btnOne": 
                        txtInput.Text += "1"; 
                        break; 
                    case "btnTwo": 
                        txtInput.Text += "2"; 
                        break; 
                    case "btnThree": 
                        txtInput.Text += "3"; 
                        break; 
                    case "btnFour": 
                        txtInput.Text += "4"; 
                        break; 
                    case "btnFive": 
                        txtInput.Text += "5"; 
                        break; 
                    case "btnSix": 
                        txtInput.Text += "6"; 
                        break; 
                    case "btnSeven": 
                        txtInput.Text += "7"; 
                        break; 
                    case "btnEight": 
                        txtInput.Text += "8"; 
                        break; 
                    case "btnNine": 
                        txtInput.Text += "9"; 
                        break; 
                    case "btnZero": 
                        txtInput.Text += "0"; 
                        break; 
                    case "btnDot": 
                        if(!txtInput.Text.Contains(".")) 
                            txtInput.Text += "."; 
                        break; 

                } 
            } 
            catch(Exception ex) 
            { 
                MessageBox.Show("Sorry for the inconvenience, Unexpected error occured. Details: " + 
                    ex.Message); 
            } 
        } 

        private void txtInput_KeyPress(object sender, KeyPressEventArgs e) 
        { 
            switch (e.KeyChar) 
            { 
                case '1': 
                case '2': 
                case '3': 
                case '4': 
                case '5': 
                case '6': 
                case '7': 
                case '8': 
                case '9': 
                case '0': 
                //case '+': 
                //case '-': 
                //case '*': 
                //case '/': 
                //case '.': 
                    break; 
                default: 
                    e.Handled = true; 
                    MessageBox.Show("Only numbers, +, -, ., *, / are allowed"); 
                    break; 
            }            
        } 

        private void txtInput_TextChanged(object sender, EventArgs e) 
        { 

        } 

        private void btnPlus_Click(object sender, EventArgs e) 
        { 
            operand1 = txtInput.Text; 
            operation = '+'; 
            txtInput.Text = string.Empty; 
        } 

        private void btnMinus_Click(object sender, EventArgs e) 
        { 
            operand1 = txtInput.Text; 
            operation = '-'; 
            txtInput.Text = string.Empty; 
        } 

        private void btnMulitply_Click(object sender, EventArgs e) 
        { 
            operand1 = txtInput.Text; 
            operation = '*'; 
            txtInput.Text = string.Empty; 
        } 

        private void btnDivide_Click(object sender, EventArgs e) 
        { 
            operand1 = txtInput.Text; 
            operation = '/'; 
            txtInput.Text = string.Empty; 
        } 

        private void btnEqual_Click(object sender, EventArgs e) 
        { 
            operand2 = txtInput.Text; 

            double opr1, opr2; 
            double.TryParse(operand1, out opr1); 
            double.TryParse(operand2, out opr2); 

            switch (operation) 
            { 
                case '+': 
                    result = (opr1 + opr2).ToString(); 
                    break; 

                case '-': 
                    result = (opr1 - opr2).ToString(); 
                    break; 

                case '*': 
                    result = (opr1 * opr2).ToString(); 
                    break; 

                case '/': 
                    if (opr2 != 0) 
                    { 
                        result = (opr1 / opr2).ToString(); 
                    } 
                    else 
                    { 
                        MessageBox.Show("Can't divide by zero"); 
                    } 
                    break; 
            } 

            txtInput.Text = result.ToString(); 
        } 

        private void btnClear_Click(object sender, EventArgs e) 
        { 
            txtInput.Text = string.Empty; 
            operand1 = string.Empty; 
            operand2 = string.Empty; 
        } 

        private void btnSqrRoot_Click(object sender, EventArgs e) 
        { 
            double opr1; 
            if (double.TryParse(txtInput.Text, out opr1)) 
            { 
                txtInput.Text = (Math.Sqrt(opr1)).ToString(); 
            } 
        } 

        private void btnByTwo_Click(object sender, EventArgs e) 
        { 
            double opr1; 
            if (double.TryParse(txtInput.Text, out opr1)) 
            { 
                txtInput.Text = (opr1 / 2).ToString(); 
            } 
        } 

        private void btnByFour_Click(object sender, EventArgs e) 
        { 
            double opr1; 
            if (double.TryParse(txtInput.Text, out opr1)) 
            { 
                txtInput.Text = (opr1 / 4).ToString(); 
            } 
        } 
    } 
} 
于 2013-09-01T05:53:48.097 に答える