티스토리 뷰

이 프로그램은 막 윈폼 기초수준을 끝마치고 작성한 첫 윈폼 프로그램이다.

이니셜이 MA인 게임의 한글화를 보조하는데 사용된 프로그램이다.

 

폼로드 이벤트시 SetupDataGridView 와 SetData 메서드로 어느정도 정규화 해보려는 시도가 보인다.

그런데 전체코드를 보면 SetupDataGridView 와 SetData 가 따로 사용된 적은 없어서 한 메서드로 해도 되지 않았나 싶다.

심지어 프로그램 시작시 1번밖에 사용되지 않지만.. 훗날을 생각하면 이런식으로 메서드를 만들어 놓는 것도 좋은것 같다.

 

SetupDataGridView 메서드는 DataGridView를 설정하는 메서드이다.

 

이런식으로 데이터그리드뷰를 3열로 만들고 열의 이름을 정하는 내용이다.

이건 디자인편집기에서 편하게 할 수 있기 때문에 코드로 할 필요가 없는데 잘몰라서 코드로 해버렸다.

 

SetData 메서드는 데이터그리드뷰에 데이터를 채우기 위한 메서드이다.

Split메서드는 분리자가 char형밖에 안되는데 줄바꿈 \r\n 으로 분리하기 위해 Regex.Split을 쓰는 잔머리를 보여줬다.

오히려 지금은 Split(new string[] {"\r\n"}, StringSplitOptions.None); 이런식으로 더 길게 썼을텐데 이런점은 배울만한 것 같다.

사실 지금도 Split(new string[] {"\r\n"}... 에 어떻게 string형이 들어갈 수 있는지 잘모르겠다. 앞으로도 그냥 Regex.Split을 써야겠다.

그 외에 parsing은 그냥 쪼개고 foreach문에 넣고 돌리고 지금도 저 정도 수준과 별로 다르지 않다ㅋㅋ

 

단축키를 단축키 쓸만한 컨트롤마다 이벤트를 넣어서 만들었다.

역시 초보랄까... 단축키를 쓸만한 컨트롤이 몇개 안되기 때문에 경제적인 선택인것 같기도 하다.

e.SuppressKeyPress = true;가 뭔지 몰라서 방금 찾아봤는데 원래 enter칠때 소리가 나는데 소리가 안나게 하기 위한 방법이라고한다.

내가 쓴 코드도 얼마 지나면 까먹기 때문에 이렇게 코드리뷰를 하는게 좋은것 같다.

 

드디어 프로그램의 핵심인 검색기능의 이벤트메서드이다.

for문을 돌려서 일치하는 데이터그리드뷰의 행을 알아내는 방식인것 같다.

데이터그리드뷰는 이 이후로 써본적이 없어서 이 방식이 괜찮게 작성한건지는 알수 없다.

검색어가 문자열일시에는 3가지의 검색옵션이 있는데 search_type이라는 변수에 1, 2, 3으로 저장된다.

1번은 ~로 시작하는, 2번은 ~를 포함하는, 3번은 일치이다.

각각 string의 매서드 StartWith, Contains, Equals에 해당한다.

지금 작성한다면 정확성을 높히기 위해 정규표현식 Regex로 할 것 같다.

 

검색 성공과 실패에 관한 처리이다.

검색 실패시 SystemSounds.Beep.Play();로 경고음이 난다.

 

이전 검색결과는 보여주면 안되기 때문에 이전에 선택된 값을 ClearSelection메서드로 없애야한다.

검색성공한 행을 선택하고 그 행이 화면에 보이게끔 스크롤을 FirstDisplayedScrollingRowIndex = position 으로 이동시켰다. 진짜 엄청 긴 변수명이다.

 

검색결과를 복사하는 버튼의 이벤트메서드이다.

Rows.GetRowCount(DataGridViewElementStates.Selected) 메서드는 거의 항상 세트로 쓰일것 같은데 열거형의 이름이 사정없이 길다.

클립보드에 문자열을 복사하는 Clipboard.SetText는 최근 만든 프로그램에도 사용한 메서드로 데이터를 가공하는 프로그램에서는 활용도가 매우 높다.

 

코드리뷰를 작성하기 전에는 웬지 시궁창인 상태를 생각했는데 생각보다 깔끔하게 작성한것 같아 좀 놀라웠다.

데이터그리드뷰를 이 이후로는 전혀 사용하지 않았는데 이런식으로 기억을 일깨울수 있어서 좋았다.

데이터그리드뷰 관련 변수의 이름이 심각하게 긴 경우가 많아서 기억할 수 있을지 모르겠다.

마소는 도대체 무슨생각으로 저런 무지막지한 작명을 한 것인가...

영어권 사람이 아니라서 저렇게 긴것이 마땅한 이유가 있는지는 알 수 없다.

 

 

이상 저의 첫번째 코드 리뷰였습니다.

 

댓글
Total
Today
Yesterday