Visual Studio 2022에서 Windows Forms 앱(.Net Framework) 템플릿을 이용해서 만들었다
버튼과 텍스트박스를 사용했고 이벤트와 연결했다
마크다운에서 c#은 cs로 표기함
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace ClaculatorForDBClass
{
public partial class Form1 : Form
{
// 새로운 연산이면 clear가 true
bool clear = true;
// 연산된 값
double result = 0;
// 현재 진행중인 연산을 나타내기 위해
char op = '0'; // +, -, *, /
// 메모리
double memory = 0;
public Form1()
{
InitializeComponent();
textBox1.Text = "0";
}
// MC memory clear 저장된 메모리 지움
private void button1_Click(object sender, EventArgs e)
{
memory = 0;
clear = true;
}
// MR memory recall 저장된 메모리 읽어옴
private void button2_Click(object sender, EventArgs e)
{
textBox1.Text = Convert.ToString(memory);
clear = true;
}
// MS memory save 메모리 저장
private void button3_Click(object sender, EventArgs e)
{
memory = Convert.ToDouble(textBox1.Text);
clear = true;
}
// M+ memory + 메모리에 저장된 수에서 현재 화면에 있는 수 더함
private void button4_Click(object sender, EventArgs e)
{
double num = Convert.ToDouble(textBox1.Text);
memory += num;
clear = true;
}
//M- memory - 메모리에 저장된 수에서 현재 화면에 있는 수 뺌
private void button5_Click(object sender, EventArgs e)
{
double num = Convert.ToDouble(textBox1.Text);
memory -= num;
clear = true;
}
// <-- backspace
private void button6_Click(object sender, EventArgs e)
{
textBox1.Text = textBox1.Text.Substring(0, textBox1.Text.Length - 1);
}
// CE clear entry 마지막 입력을 지운다 (계산 후 결과값에서 누르면 C나 AC와 같은 결과)
private void button7_Click(object sender, EventArgs e)
{
textBox1.Text = "0";
if (op == '0')
{
clear = true;
}
}
// C clear 모든 계산을 지운다
private void button8_Click(object sender, EventArgs e)
{
textBox1.Text = "0";
result = 0;
clear = true;
}
// ±
private void button9_Click(object sender, EventArgs e)
{
textBox1.Text = Convert.ToString(Convert.ToDouble(textBox1.Text) * -1);
}
// √
private void button10_Click(object sender, EventArgs e)
{
textBox1.Text = Convert.ToString(Math.Pow(Convert.ToDouble(textBox1.Text), 0.5));
}
// %
private void button15_Click(object sender, EventArgs e)
{
textBox1.Text = Convert.ToString(Convert.ToDouble(textBox1.Text) / 100);
}
// 1/x
private void button20_Click(object sender, EventArgs e)
{
double num = Convert.ToDouble(textBox1.Text);
num = 1 / num;
textBox1.Text = Convert.ToString(num);
}
// /
private void button14_Click(object sender, EventArgs e)
{
// 텍스트를 double형의 숫자로 변환
double num = Convert.ToDouble(textBox1.Text);
// 이전에 기록된 연산이 있다면 수행
if (op == '0')
{
result = num;
textBox1.Text = Convert.ToString(result);
clear = true;
}
else
{
button28_Click(sender, e); // = 수행
}
op = '/';
}
// *
private void button19_Click(object sender, EventArgs e)
{
// 텍스트를 double형의 숫자로 변환
double num = Convert.ToDouble(textBox1.Text);
// 이전에 기록된 연산이 있다면 수행
if (op == '0')
{
result = num;
textBox1.Text = Convert.ToString(result);
clear = true;
}
else
{
button28_Click(sender, e); // = 수행
}
op = '*';
}
// -
private void button24_Click(object sender, EventArgs e)
{
// 텍스트를 double형의 숫자로 변환
double num = Convert.ToDouble(textBox1.Text);
// 이전에 기록된 연산이 있다면 수행
if (op == '0')
{
result = num;
textBox1.Text = Convert.ToString(result);
clear = true;
}
else
{
button28_Click(sender, e); // = 수행
}
op = '-';
}
// +
private void button26_Click(object sender, EventArgs e)
{
// 텍스트를 double형의 숫자로 변환
double num = Convert.ToDouble(textBox1.Text);
// 이전에 기록된 연산이 있다면 수행
if (op == '0')
{
result = num;
textBox1.Text = Convert.ToString(result);
clear = true;
}
else
{
button28_Click(sender, e); // = 수행
}
op = '+';
}
// =
private void button28_Click(object sender, EventArgs e)
{
// 텍스트를 double형의 숫자로 변환
double num = Convert.ToDouble(textBox1.Text);
// 연산을 수행
switch (op)
{
case '+':
result += num;
break;
case '-':
result -= num;
break;
case '*':
result *= num;
break;
case '/':
result /= num;
break;
}
textBox1.Text = Convert.ToString(result);
clear = true;
op = '0';
}
// .
private void button25_Click(object sender, EventArgs e)
{
// 아무것도 입력이 되지 않은 상태에서 소수점 버튼을 누르면
if (clear == true)
{
textBox1.Text = "0.";
clear = false;
}
else if (textBox1.Text.Contains(".") == false) // 이전에 소수점이 한 번도 사용되지 않았을 경우
{
textBox1.Text += ".";
}
}
// 0~9
private void btnNumClick(object sender, EventArgs e)
{
Button btn = sender as Button;
// 처음 입력받는 숫자라면
if (clear == true)
{
textBox1.Text = btn.Text;
clear = false;
}
else
{
textBox1.Text += btn.Text;
}
}
}
}
https://kuduz.tistory.com/1153
https://m.post.naver.com/viewer/postView.nhn?volumeNo=16403459&memberNo=11439725
작년에 배운 C# 강의자료