외로운 Nova의 작업실

c# 계산기프로그램만들기 - 5 본문

Programming/C#

c# 계산기프로그램만들기 - 5

Nova_ 2022. 3. 22. 11:35

오늘은 내가 했던 계산기록들과 백스페이를 누르면 방금햇던 입력이 취소되는 기능을 추가했다.

먼저 아래는 계산기 모양이다.

계산기록들은 report라는 txt파일 만들어서 거기에다 파일 입출력기능으로 구현했다.

관련 자료 영상은 아래와 같다.

https://www.youtube.com/watch?v=9PeiY4FzDf4

Stream파일 객체를 사용하여 구현했다. 아래는 관련 코드이다.

  private void WriteReport()//연산을 하는 식을 텍스트 파일에 쓰고 닫음
        {
            StreamWriter wr = new StreamWriter("Report.txt", append : true);
            wr.WriteLine(SubResultLabel.Text + Screen.Text);
            wr.WriteLine("=" + result);

            wr.Close();
        }

        private void ReadReport()//report에 써있는 것들을 reportlabel에 전달
        {
            StreamReader rd = new StreamReader("Report.txt");

            String S = rd.ReadToEnd();

            ReportLabel.Text = S;

            rd.Close();

        }

여기서 중요한점은 StreamWrite의 경우 파일이 닫히고 다시 열린다음 write하게되면 처음라인부터 써진다는것이다.

이를 방지하기위해선 StreamWriter wr = new StreamWriter("Report.txt", append : true); 이부분에서 append 속성을 true로 바꿔줘야한다.

또한 cancel버튼을 누르거나 창 닫기를 누르면 파일에 있는 내용들이 다 사라지고 파일은 살아있게 만들고싶었지만 도통 관련 지식들이 없어서 그냥 파일 삭제를 해야겠다 마음을 먹엇다.

아래는 관련 코드이다.

  private void DeleteTextFile()//파일삭제 함수
        {
            if (File.Exists("Report.txt"))
            {
                File.Delete("Report.txt");
            }
        }

여기서 중요한부분이있는데 폼을 종료할때 종료하기전에 발생하는 이벤트가 있는데 그것은, FormClosing이벤트이다.

아래는 관련 사진과 코드이다.

private void Form1_FormClosing(object sender, FormClosingEventArgs e)//종료버튼 누르면 리포트 텍스트상자 없애는 함수
        {
            DeleteTextFile();
        }

이렇게 설정해주면 창닫기 버튼을 눌르면 파일은 삭제된다.

이제 백스페이스 누르면 이전에 입력햇는 글자하나가 사라지는 기능을 추가했다.

여기서 중요한 부분은 String객체에는 Length라는 속성이 있고, SubString()이라는 메소드도 있다는것이다,

Length는 글자의 길이를 반환해주고 SubString(a,b) - a번째 글자부터 b번째 글자까지 자른다음에 반환하는것이다.

아래는 관련 코드이다.

   private string RemoveEndChar(String s)//s의 문자열에서 마지막 문자만 빼고 남은 문자열을 반환해줌
        {
            int length = s.Length;

            return s.Substring(0, length - 1);

        }

위와같이 코딩한다면 잘 작동될것이다.

무슨말인지모르겠다면 여러가지 검색해보고 자신의 코드에 쓰면 좋을것이다.

'Programming > C#' 카테고리의 다른 글

c# 언어 공부 - 1(자료형)  (0) 2022.04.29
c# 계산기프로그램만들기 - 6  (0) 2022.03.22
c# 계산기프로그램만들기 - 4  (0) 2022.03.22
c# 계산기프로그램만들기 - 3  (0) 2022.03.22
c# 계산기프로그램만들기 - 2  (0) 2022.03.22
Comments