휴~~~~~~~~
여기까지가 데브에 적은 마지막 강좌이다.
21편부터는 블러그에 먼저적게 될듯 후후..~~ 힘들다 자료 옮기기..
//----------------
자 이번에는 아주 단순한 그리고 정말 단순한것을 해보자.
우리는 코딩을 하면서 어디서나 빠지지 않는 초기화와 입력값을 다 입력한 뒤에 엔터를 치면 다음 컨트롤로 가는 코딩을 처리하게 된다.
이것은 일반적으로 너무 단순한것이라 문제이다.
왜냐면 이게 단순하므로 대부분의 사람들은 이것을 코딩으로 처리하지 않고 일일이 마우스로 눌러서 이벤트 코드가 자동으로 만들어진 상태에서 적기 때문이고 겨우나마 조금 개념이 있는 프로그램머의 경우 델리게이트로 하나의 매서드로 모을수 있다는것을 알고 여러 컨트롤을 선택한 다음 키 다운 이벤트에다가 넣어주곤 한다.
하여간 이렇게 단순한것을 코딩하는데 시간을 소비하게 되는데 아주 코딩이란것을 처음 접하는 사람이 문제이다. 정말 순진무구하고 또한 열성적으로 100개의 컨트롤이 있으면 100번 적어준다는게 문제이다. 아마도 그분도 for 문을 배웠겠지만 당장 업무가 그러할진데 어떻게 하겠는가.
내가 이글을 적으면서도 위의 사실이 거짓말같은 생각이 들정도로 열성적으로 코드를 만들었더랬다.
한번은 내가 가서 이렇게 하면 된다고 슬그머니 알려준적도 있는데 자신이 아는길 이외에는 하고 싶지도 않은듯 오로지 무지막지하게 코드를 증가시키는 분이 있었다. 그분의 여러코딩까지 합쳐서 폼클래스에서만 전체코드만 이만줄이 넘었더랬다.
나중에 내가 수정하는것도 보통애먹은게 아니였는데 이미 그렇게 적은 코드를 아래와 같이 바꾸는게 쉽지 않기 때문이다.(이유는 실무에서 당해보면 안다.)
이미 아래의 방법은 널리고 널린 수준의 형태이나 아직도 사용하지 않는이가 많은듯 해서 예제를 만들어 보았다.
단순예를 들어보자.
이것은 방금만든 클래스인데.. 엔터를 치면.. 위의 생성한 이벤트가 실행될것이다.
폼의 시작시에
이렇게만 적어주면 이제 어떤 택스트박스를 가져다 놓고 엔터를 쳐도 무관하다 당연히 기존의 이벤트와도 무관할것이다.
대규모 테스트를 위한 상황을 만들어 보자.
우리는 일반적으로 각 컨트롤마다 있는 Tab Index를 이용하게 되는데 탭을 치면 자동적으로 다음값으로 이동한다.
이것은 Control클래스에 기본속성으로 상속이 되어 있다
간단하지 않은가?
엔터키를 칠때 다음으로 이동하는 코딩은 그야말로 VB6.0부터 애용되는 방식이 있다.
이렇게 적어주면 된다.
조금 c#적으로 한다면..
이런 방식도 있겠다.
엔터를 치면 띵하고 소리가 나는데 이 소리에 상당히 거슬려 하는경우가 많다. 그러므로 이것을 없게 해주면 된다. 어떻게 할까?
간단하다. 키를 전달하지 않으면 되는것이다. 예전 vb쪽에서는 Keycode = 0를 대입하거나 해서 엔터키가 아닌것으로 처리하기도 했다.
객체지향의 유리한점은 객체에 모든게 있지만… 단점은? 사용자가 그 속성을 안써보면 잘 모른다는것이다.
e.SuppressKeyPress = true;
이렇게 한줄만 적어줘도 알아서 처리가 된다. 말그대로 키값을 억압하는것이다. VB6의 코딩에 익숙하다면..사실상 C#도 상당히 유사한게 많다.
이런 기초적인것들이 대부분 알고 있음에도 잘 공개하질 않는다. 아님 잘 찾아보질 않거나
덕분에 이런질문류도 여전히 질답란을 종횡무진하고 있다.
이렇게 단순하게 택스트 박스만 소스를 적어 놓았다고 아무생각없는 사람들이 저기 있는듯 싶다.
당신의 갈길은 아직 멀다. 정말 이것은 간단하면서도 좋은 코드들이지만 택스트박스가 멀티라인이라면 어떻게 할것인가? 또는 콤보박스에도 포커스를 맞추어야 하고
여러가지 추가할것들이 분명 많다. 위의 코드에 빈곳이 보이지 않는가?
그리고 공개해 보라.~~ 나도 배우고 싶다.
두번째로 초기화가 되겠다.
초기화 별게 있는가? 위에서 잠시말했듯이 초기화와 엔터키이동들은 반드시 열외되는것을 지정하는 방법이 있어야 한다. 그것은 당신을 믿겠다.
초기화도 당신이 충분히 할 수 있을것이다. 그저 위의 클래스에 적당히 하나 추가해주자.
이제 소스를 적지 않아도 될 수준까지 충분히 foreach 의 구문에 익숙해 졌다고 생각한다.
택스트 박스 초기화 / 콤보박스 초기화 / DataView 초기화 등등말이다.
AllClear같은건 위의걸 한번에 호출해주면 될것아닌가.
당신의 댓글로 소스를 한번 달아주는것은 어떨까?
원본 위치 <http://www.devpia.com/MAEUL/Contents/Detail.aspx?BoardID=18&MAEULNO=8&no=1606&page=1>
'C# DB 코딩 강좌' 카테고리의 다른 글
C#을 이용한 DB코딩 21 (0) | 2008.11.19 |
---|---|
C#을 이용한 DB코딩 19 (0) | 2008.11.14 |
C#을 이용한 DB코딩 18 (0) | 2008.11.14 |
C#을 이용한 DB코딩 17 (0) | 2008.11.14 |
C#을 이용한 DB코딩 16(실습파일포함) (0) | 2008.11.14 |
C#을 이용한 DB코딩 15 (0) | 2008.11.14 |
C#을 이용한 DB코딩 14 (0) | 2008.11.14 |
C#을 이용한 DB코딩 13 (0) | 2008.11.14 |
C#을 이용한 DB코딩 12 (0) | 2008.11.14 |
C#을 이용한 DB코딩 11 (0) | 2008.11.14 |