Member 13457588 Ответов: 1

Калькулятор C# в методе


Я пытаюсь построить калькулятор и поместить код, который запускает его внутри метода Operations (), и когда, например, будет нажат - минус, он заглянет внутрь Operations (), а затем увидит if btnMinus.click и запустит эту его часть. Мне также нужно сделать это +,/,*, percent, но как только я получу некоторую помощь по этому вопросу, я смогу это понять.

Я пытаюсь создать параметр, который я не понимаю, как это сделать, поскольку моя книга объясняет его как минус => 100. Пользователь вводит левое и правое значения. Как бы я заставил его пройти через минусовую часть кода в методе Operations ()?

публичные frmActors()
{
метод InitializeComponent();
}

// Поместите свой метод здесь
частный недействительными операций()
{

// Код, который будут использовать все операции.
десятичное значение dLeft = 0.0 m;
десятичный дрейф = 0,0 м;
десятичные dAnswer = 0.0 м;
строка szLeft = "";
строка szRight = "";
строка szAnswer = "";
последовательность строк = "";

szLeft = txtLeft. Text;
szRight = txtRight.Текст;

dLeft = преобразовать.ToDecimal(szLeft);
верному = конвертировать.ToDecimal(szRight);



//Минус
{
если (btnMinus.Щелчок
)dAnswer = dLeft-dRight;

szAnswer = дансвер.Метод toString();

szEquation = szLeft + " - "+ szRight + " = " + szAnswer;
}









lblAnswer.Текст = "";
lblAnswer.Текст = секвация;








}
частная btnPercent_Click недействительным(объект отправителя, EventArgs в электронной)
{







}



частная btnDivide_Click недействительным(объект отправителя, EventArgs в электронной)
{
десятичное значение dLeft = 0.0 m;
десятичный дрейф = 0,0 м;
десятичные dAnswer = 0.0 м;
строка szLeft = "";
строка szRight = "";
строка szAnswer = "";
последовательность строк = "";

szLeft = txtLeft. Text;
szRight = txtRight.Текст;

dLeft = преобразовать.ToDecimal(szLeft);
верному = конвертировать.ToDecimal(szRight);

dAnswer = dLeft / dRight;

szAnswer = дансвер.Метод toString();

szEquation = szLeft + " / "+ szRight + " = " + szAnswer;

lblAnswer.Текст = "";
lblAnswer.Текст = секвация;


}

частная btnMultiply_Click недействительным(объект отправителя, EventArgs в электронной)
{
десятичное значение dLeft = 0.0 m;
десятичный дрейф = 0,0 м;
десятичные dAnswer = 0.0 м;
строка szLeft = "";
строка szRight = "";
строка szAnswer = "";
последовательность строк = "";

szLeft = txtLeft. Text;
szRight = txtRight.Текст;

dLeft = преобразовать.ToDecimal(szLeft);
верному = конвертировать.ToDecimal(szRight);

dAnswer = dLeft * dRight;

szAnswer = дансвер.Метод toString();

szEquation = szLeft + " * "+ szRight + " = " + szAnswer;

lblAnswer.Текст = "";
lblAnswer.Текст = секвация;


}

частная btnMinus_Click недействительным(объект отправителя, EventArgs в электронной)
{
Операции();


}

частная btnPlus_Click недействительным(объект отправителя, EventArgs в электронной)
{
десятичное значение dLeft = 0.0 m;
десятичный дрейф = 0,0 м;
десятичные dAnswer = 0.0 м;
строка szLeft = "";
строка szRight = "";
строка szAnswer = "";
последовательность строк = "";

szLeft = txtLeft. Text;
szRight = txtRight.Текст;

dLeft = преобразовать.ToDecimal(szLeft);
верному = конвертировать.ToDecimal(szRight);

dAnswer = dLeft + dRight;

szAnswer = дансвер.Метод toString();

szEquation = szLeft + " + "+ szRight + " = " + szAnswer;

lblAnswer.Текст = "";
lblAnswer.Текст = секвация;

}
}
}

Что я уже пробовал:

Я попытался создать параметр с помощью btnMinus. click, чтобы позволить ему пройти через этот набор кода.
Мне нужно сделать +,*,/, а также процент, поэтому мне нужно сделать это внутри метода. Я просто не знаю, как после того, как я положил его туда, чтобы назвать его.

1 Ответов

Рейтинг:
2

Steve44

Вот решение вашего конкретного вопроса.
Я не обсуждаю, является ли это наиболее логичным способом сделать это, но просто дайте ответ на то, что вы пытаетесь сделать на своем пути.

Одна из причин, по которой ваш код не работает, заключается в том, что btnMinus.Click-это не то, что вам нужно, он не говорит вам, была ли нажата кнопка, но это обработчик событий, который содержит метод обратного вызова, который вызывается при нажатии кнопки. InitializeComponent добавляет обратный вызов следующим образом:

this.btnMinus.Click += new System.EventHandler(this.btnMinus_Click);

Это так же просто, как объяснение.
Поэтому вам нужен другой способ сказать Operations (), какую операцию выполнять. Один из способов пропущен здесь (я просто поставил минус код операции в качестве примера, вы должны быть в состоянии реализовать другие операции):
        /// <summary>
        /// Define all operations you want to support in this enumeration
        /// </summary>
        enum Ops
            {
                Plus,
                Minus,
                Mult,
                Div,
                Percent
            };

        /// <summary>
        /// Do all work in this single method.
        /// </summary>
        /// <param name="op">The operation to perform.</param>
        void Operations(Ops op)
        {
            decimal dLeft = 0.0m;
            decimal dRight = 0.0m;
            decimal dAnswer = 0.0m;
...
            switch (op)
            {
                case Ops.Minus:
                    dAnswer = dLeft - dRight;
                    break;
...
            }
        }

        private void btnMinus_Click(object sender, EventArgs e)
        {
            Operations(Ops.Minus);
        }
...