[C#] WinForm으로 간단한 카운터 프로그램 만들기
개인적인 용도로 메모용의 카운터가 필요했는데, 가볍고 작게 만들어진 프로그램이 없어서 직접 만들기로 했다.
아래는 실제 구현된 결과이다.
필요 기능 정리
바탕화면에 둘 수 있는 작고 간편한 카운터를 원했기 때문에, 다음 기준을 만족시켜야 했다.
- 좌클릭하면 증가
- 우클릭하면 감소
- 0으로 리셋 가능
- 원하는 숫자로 설정 가능
- 프로그램을 종료했을 때에도 마지막 숫자를 가져올 것
구현
윈도우 폼으로 구현했다. 간편하게 GUI 환경에서 프로그램을 만들 수 있어서 선호한다.
위쪽으로 Label을 배치하고, 아래에는 작은 pictureBox를 달았다.
pictureBox를 눌렀을 때 메뉴가 뜰 수 있도록 contextMenuStrip을 배치했다.
Reset을 클릭하면 카운터가 0이 되도록 메서드를 연결하고, Set에는 Dialog Form을 연동했다.
그렇다. 별로 설명할 것도 없다.
구현하는 중 겪은 문제들
1. 마우스 클릭에 딜레이가 생기는 문제
MouseClick에만 메서드를 할당했더니, 두 번 빠르게 클릭했을 때 카운터가 올라가지 않았다.
이유는 MouseDoubleClick이 호출되기 때문이었다. 아니...
그래서 MouseClick이랑 MouseDoubleClick 모두에 메서드를 할당했더니 딜레이가 없어졌다 껄껄
2. 폼 콜백 설정하기
Form.ShowDialog()를 이용하면,
새로 표시된 폼이 닫히기 전에는 이전 폼에서 조작을 할 수 없다는 사실은 알고 있었지만, 이번에 사용해보니 더 많은 이점이 있었다.
ShowDialog()의 이점은 폼을 대화상자처럼 이용할 수 있다는 것이다.
ShowDialog는 자식 폼의 결과가 전달되기 전까지 부모 폼을 정지시킨다.
이로 인해 콜백을 사용할 수 있다. 자식 폼의 리턴 결과는 DialogResult로 전달되며, 이에 따라 코딩을 할 수 있다.
처음에는 Form2의 메서드에 Form1의 인스턴스를 연결시키려고 별 짓을 다 했는데 그럴 필요가 없었던 것이다.
이런 식으로 this.DialogResult에 결과만 연결해주면 끝.
3. 폼 열었을 때 Textbox focus하기
폼 Load 메서드에 textbox.Focus()만 연결해주면 되는 줄 알았는데, 한 가지를 더 해야 했다.
this.ActiveControl에 먼저 컨트롤을 할당해주어야만 Focus가 가능했다.
4. 레지스트리 읽고 쓰기
C# Winform에서 레지스트리를 사용해본 적은 처음이라, 이래저래 많이 찾았다.
- Microsoft.Win32 네임스페이스를 사용할 것
- 비주얼 스튜디오를 관리자 권한으로 실행해야 함 (혹은 권한 부여)
두번째를 찾느라 조금 고통받았다. LocalMachine에 접근하려면 IDE인 비주얼 스튜디오에 권한을 할당해야 했던 것.
간단한 프로그램이지만 아무튼 완성했으니, 잘 써야겠다.
'개발 일지 > 소프트웨어' 카테고리의 다른 글
[Unity] 사이퍼즈 파티 메이커 앱 개발기 - 구현 단계(1) (4) | 2020.12.11 |
---|---|
[Unity] 사이퍼즈 파티 메이커 앱 개발기 - 기획 단계 (1) | 2020.12.11 |
[Asset 제작 일지] 대화 시스템 만들기 14 : 선택지 시스템 업데이트 (0) | 2020.10.12 |
[Asset 제작 일지] 대화 시스템 만들기 13 : 에셋 스토어 업로드 (0) | 2020.05.16 |
[Asset 제작 일지] 대화 시스템 만들기 12 : 프리팹 작업 (0) | 2020.04.20 |
댓글
이 글 공유하기
다른 글
-
[Unity] 사이퍼즈 파티 메이커 앱 개발기 - 구현 단계(1)
[Unity] 사이퍼즈 파티 메이커 앱 개발기 - 구현 단계(1)
2020.12.11 -
[Unity] 사이퍼즈 파티 메이커 앱 개발기 - 기획 단계
[Unity] 사이퍼즈 파티 메이커 앱 개발기 - 기획 단계
2020.12.11 -
[Asset 제작 일지] 대화 시스템 만들기 14 : 선택지 시스템 업데이트
[Asset 제작 일지] 대화 시스템 만들기 14 : 선택지 시스템 업데이트
2020.10.12 -
[Asset 제작 일지] 대화 시스템 만들기 13 : 에셋 스토어 업로드
[Asset 제작 일지] 대화 시스템 만들기 13 : 에셋 스토어 업로드
2020.05.16