반응형
안녕하세요. BlockDMask 입니다.
요즘 책을 보면서 C# 공부를 하고있는데, 역시 언어 공부는 직접 해보면서 해야 늘더군요.
그래서 만들어봤습니다. 윈도우 폼 계산기.
정말 간단한거라서 이렇게 소개해도 되나 싶지만, 그래도 제가 만든 프로그램? 하나하나 써 내려갈 생각입니다.
1. 프로그램 영상
2. 구현을 하면서 고려한것
- 책으로 공부하면서, 제가 이해를 잘 못했던 C# 델리게이트(Delegate) 문법을 사용해 보았습니다.
간단하게 계산기를 만드는데, 이게 왜 필요하냐고 하실 수도 있지만, 그래도 delegate 예제로 간단하게 봐주셨으면 좋겠습니다.
또, 여기서 string 타입을 다른 정수, 실수형 타입으로 형변환 하는것도 보실수 있습니다.
3. 소스코드
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 | 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 calc { delegate void MathFunc(); public partial class Form1 : Form { public float recentNum = 0.0f; public float savedNum = 0.0f; public bool mathFlag = false; MathFunc func = null; public void MyPlus() { savedNum += recentNum; } public void MyDiv() { if(recentNum == 0) { recentNum = 0; return; } savedNum /= recentNum; } public void MyMinus() { savedNum -= recentNum; } public void MyMul() { savedNum *= recentNum; } public Form1() { InitializeComponent(); } private void NumButton_Click(object sender, EventArgs e) { if (resultTxt.Text == "0" || mathFlag == true) { resultTxt.Clear(); mathFlag = false; } Button b = (Button)sender; resultTxt.Text = resultTxt.Text + b.Text; recentNum = float.Parse(resultTxt.Text); } private void MathBtn_Click(object sender, EventArgs e) { if (mathFlag == true) { return; } Button b = (Button)sender; switch (b.Text) { case "+": func = MyPlus; break; case "-": func = MyMinus; break; case "/": func = MyDiv; break; case "*": func = MyMul; break; } mathFlag = true; savedNum = float.Parse(resultTxt.Text); } private void Clear(object sender, EventArgs e) { string s = resultTxt.Text.Substring(0, resultTxt.Text.Length - 1); if (s.Length == 0) { resultTxt.Text = "0"; } else { resultTxt.Text = s; } } private void ClearAll(object sender, EventArgs e) { resultTxt.Text = "0"; } private void Result_Click(object sender, EventArgs e) { func?.Invoke(); resultTxt.Text = savedNum.ToString(); } } } | cs |
깃허브 : https://github.com/BlockDMask/simple_calculator
반응형
'<개인공부> > [C#]' 카테고리의 다른 글
[C#] 리터럴(Literal)이란? (7) | 2019.07.05 |
---|---|
[C#] random, 랜덤 클래스에 대해서 (랜덤함수, 난수생성) (0) | 2019.05.08 |
[C#] params 가변인자 매개변수에 대해서. (4) | 2019.03.21 |
[C#] checked, unchecked 키워드에 대해서. (0) | 2019.03.20 |
[C#] foreach 사용법과 다양한 예제 (1) | 2019.01.11 |
[C#] 리터럴, 예약어, 식별자에 대해서 (literal, reserved word, identifier) (3) | 2019.01.11 |
[C#] 배열 초기화, 다차원배열, 가변배열에 대해서 (array, jagged array) (4) | 2019.01.10 |
[C#] 자료형에 대해서 (Built-in Data Type, 기본자료형들) (4) | 2019.01.09 |