Поставлен в тупик на операциях калькулятора в C # - PullRequest
2 голосов
/ 12 февраля 2012

Я делал калькулятор с помощью приложения Windows Forms, и сейчас я в тупике. Вот мое приложение до сих пор, оно может делать только сложение, но любое количество цифр.

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 Calculator
{
public partial class Form1 : Form
{
    int num;
    int answer = 0;
    int i;


    public Form1()
    {
        InitializeComponent();
    }



    private void plusButton_Click(object sender, EventArgs e)
    {          
        answer += System.Convert.ToInt32(textBox1.Text);            
        ClearTextbox();
    }

    private void minusButton_Click(object sender, EventArgs e)
    {
        //answer -= System.Convert.ToInt32(textBox1.Text);
        //ClearTextbox();
    }

    private void Form1_Load(object sender, EventArgs e)
    {

    }

    private void divideButton_Click(object sender, EventArgs e)
    {

    }

    private void multiplyButton_Click(object sender, EventArgs e)
    {

    }

    private void textBox1_TextChanged(object sender, EventArgs e)
    {

    }

    private void button1_Click(object sender, EventArgs e)
    {
        num = 1;
        displayInt(num);
    }

    private void button2_Click(object sender, EventArgs e)
    {
        num = 2;
        displayInt(num);
    }

    private void button3_Click(object sender, EventArgs e)
    {
        num = 3;
        displayInt(num);
    }

    private void button4_Click(object sender, EventArgs e)
    {
        num = 4;
        displayInt(num);
    }

    private void button5_Click(object sender, EventArgs e)
    {
        num = 5;
        displayInt(num);
    }

    private void button6_Click(object sender, EventArgs e)
    {
        num = 6;
        displayInt(num);
    }

    private void button7_Click(object sender, EventArgs e)
    {
        num = 7;
        displayInt(num);
    }

    private void button8_Click(object sender, EventArgs e)
    {
        num = 8;
        displayInt(num);
    }

    private void button9_Click(object sender, EventArgs e)
    {
        num = 9;
        displayInt(num);
    }

    private void button0_Click(object sender, EventArgs e)
    {
        num = 0;
        displayInt(num);
    }

    private void resetButton_Click(object sender, EventArgs e)
    {
        ClearTextbox();
        num = 0;
        answer = 0;

    }

    public void displayInt(int num)
    {
        textBox1.Text = textBox1.Text + num.ToString();
    }

    public void ClearTextbox()
    {
        textBox1.Clear();
    }

    public void DisplayAnswer(int answer)
    {
        answer += System.Convert.ToInt32(textBox1.Text); //Answer = Answer + Textbox Stuff


        textBox1.Clear();
        textBox1.Text = answer.ToString();
    }

    private void equalsButton_Click(object sender, EventArgs e)
    {
        DisplayAnswer(answer);
        num = 0;
        answer = 0;
    }


}
}

Я не уверен, есть ли способ подождать, пока нажата другая цифровая клавиша, а затем выполнить x + y. Я слышал об обработчиках событий, но это довольно расплывчатая тема для меня.

Вот картинка: http://img196.imageshack.us/img196/4127/12464e13e5154a949a9a457.png

* Я хочу, чтобы он мог выполнять операции с более чем 2 числами.

Спасибо!

Ответы [ 2 ]

2 голосов
/ 12 февраля 2012

Ваш код немного запутан, и вам сложно понять ваши намерения. Помощь с этим кодом будет долго ждать. Я предлагаю следовать этому простому учебнику калькулятора . Он очень хорошо объясняет концепции и этапы, включая события кнопок.

0 голосов
/ 12 февраля 2012

Вы должны иметь кнопку «+» и кнопку «=».Тогда ваш калькулятор имеет два числовых поля и два состояния:

1) Ввод первого номера

2) Ввод второго номера

У вас может быть переменная, сообщающая, какой номер вводится.

int field = 1;

При нажатии цифровой кнопки эта цифра должна быть добавлена ​​в соответствующее поле.

При нажатии кнопки «+» - измените состояние на

field = 2;

Теперь цифры будут добавлены во второе поле.

Когда вы нажмете «="-Кнопка, преобразовать два числа, которые все еще являются строками, в int, добавить их и вывести их в поле результата.Установите состояние обратно на

field = 1;

Также кнопка «очистить» очистит поля и установит field = 1;


Примечание. Как говорит Пол Сасик, ваш коднемного грязноЯ бы помог, если бы вы дали своим кнопкам осмысленные имена вроде btnDigit1, btnDigit2, btnPlus, btnEquals, btnClear.Если дважды щелкнуть кнопку в конструкторе, будет создан обработчик событий, например btnPlus_Click.Это яснее, чем button17_Click.

...