안녕하세요? Visual Studio에서 C#으로 계산기 만들기 2편 입니다. 생각보다 빨리 2편을 시작하게 된 것 같습니다. 중급으로 설정해서 인지 설명 부분이 많이 짧습니다. 잘 이해를 못하는 부분은 소스 코드(말보다는 소스 코드)를 확인해 보시면 될 것 같습니다(계산기 소스만 퍼가시는 분들이 많은 것 같습니다 ㅠㅠ).

 아직 소스 코드가 많이 복잡하지 않으니 설명을 짧게 해서 진행 하겠습니다다. 이해가 어려운 부분이 있으시면 댓글을 남겨 주시기 바랍니다.


 이번 시간에는 1편에서 만들었던 MyCalc을 좀 더 진화? 시켜 보겠습니다. 윈도우 계산기에서 연산을 한번하고 "=" 또는 엔터키(Enter Key)를 입력하면 마지막 연산을 계속 수행합니다. "5 + 3 = "을 계산하면 8이라는 결과가 나옵니다. 여기에서 다시 "=" 또는 엔터키(Enter Key)를 입력하면 "8 + 3 = "을 계산 합니다.




 이전에 만들었던 계산기에서 위 기능을 구현해 보겠습니다(1편의 MyCalc에서 사칙연산(+, -, *, /) 버튼을 클릭하면 첫번째 값을 FirstValue 맴버에 저장하고 두번째 결과 값을 받기 위해서 결과 입력 TextBox를 초기화 했었습니다).


 먼저 두번째 값을 저장하기 위해서 SecondValue 맴버 변수를 선언합니다. 사칙연산 버튼의 Click 이벤트에서 SecondValue 맴버를 초기화 하도록 코드를 추가 하였습니다. 사칙연산 버튼 클릭 후 항상 다음 값을 입력하기 때문에 SecondValue를 초기화 하였습니다.




 Equal 버튼의 Click 이벤트에서 SecondValue 값이 초기값인지 확인을 하고 초기 값이면 결과 입력 TextBox의 값을 SecondValue에 저장하도록 하였습니다. Equal 버튼을 연속해서 클릭할떄 마다 SecondValue 값을 사용하기 위해서 입니다.


 그 다음으로 각 연산을 수행하는 코드(switch 부분)를 수정 하였습니다. 이전에는 FirstValue 값과 결과 TextBox 값을 바로 연산하여 바로 결과로 보여 줬습니다. 이번에는 FirstValue 값과 SecondValue 값을 연산 후 FirstValue에 저장 하였습니다. 그뒤에 결과 TextBox에 출력 하였습니다.




 C버튼의 Click 이벤트에서 SecondValue 값을 초기화 하도록 추가 하였습니다.




 이제 실행해서 확인해 보시면 첫번쨰 연산 후 Equal 버튼을 누르면 마지막 연산을 연속해서 수행합니다. "5 + 2 = 7" 수행 후 Equal 버튼을 계속 클릭하면 결과 값이 5 -> 7 -> 9 -> ... 처럼 변하게 됩니다.



 이번에는 첫번째 숫자 입력 후 연산 버튼을 눌렸을떄 결과 TextBox의 값을 유지 하도록 하겠습니다. 윈도우 계산기에서도 동일하게 동작을 하는 기능 입니다.


 사칙연산 Click 이벤트에서 결과 TextBox를 초기화 하는 부분을 주석 처리하여 화면에 첫번째 값을 계속 표시 하도록 하였습니다.




 이제 0~9버튼의 Click 이벤트에서 Operation의 값이 string.Empty 이고 SecondValue 값이 초기값이면 결과 TextBox를 초기화 하도록 하였습니다(사칙연산 버튼을 클릭 했고 두번째 값이 없을때 결과 TextBox를 초기화 합니다).




 C 버튼 Click 이벤트에서 Operation을 string.Empty로 초기화 하도록 하였습니다. 0~9버튼의 Click 이벤트에서 Operation의 값으로 사칙연산을 입력했는지 확인하기 때문에 초기화 하였습니다.




 이번은 여기까지 입니다. Equal 버튼으로 마지막 연산을 계속 수행 하도록 하였으며 사칙연산 버튼을 눌렸을떄 첫번째 값을 유지 하도록 하였습니다.


MyCalc_0.2.zip


 

 

※ 쿠팡 파트너스 활동을 통해 일정액의 수수료를 제공받을 수 있습니다.

Comment +2

  • seolmk 2020.06.07 16:38

    안녕하세요^^ 이제 막 씨샵 개발에 뛰어들었는데요, 인터넷 여기 저기서 계산기 만드는 소스를 찾고 있었는데, 자세히 설명되어 있고 코드도 올려주셔서 많은 도움이 됐습니다. 정말 감사합니다^^

Prev 1 2 3 4 5 6 7 8 ··· 17 Next