2010.08.10 00:55 책 정리/Effective C#

이 포스트를 만든 목적

  • 공부 하려고

이 포스트의 준비물

  • gVim 7.2
  • Microsoft Visual C# 2010 Express

참고 서적

  • Effective C#

내용

닷넷의 유효성 검증 기능은 무엇을 말하는가?

  • .NET C# 애플리케이션 에선, 사용자가 입력된 값들이 올바른지 검증하는 기능을 뜻한다.
  • .NET ASP 웹 애플리케이션 에선, 사용자가 전송한 값들이 올바른지 검증하는 기능을 뜻한다.

어떤 검증 기능이 있는가?

  • .NET ASP APP(애플리케이션)의 경우, 일차적으로 RegularExpressionValidator 을 사용하여, 정규표현식으로 검증할 수 있다. 일반적으로 .NET ASP APP뿐만 아니라, .NET C# APP에서도 많이 사용한다. 이 방법을 "정규표현식 검증법" 이라고 할 수 있다.
    - 사용법은 http://msdn.microsoft.com/en-us/library/eahwtc9e.aspx 참조

  • .NET C# APP 의 경우, 마찬가지로 정규표현식 검증법을 사용할 수 있고, 추가로 더 많은 기능과 쓰임을 위하여, System.Windows.Forms.Control.Validating 이벤트 핸들러를 구현하여, 처리할 수 있다. 이 방법을 사용하면, 검증 루틴을 따로 함수로 손쉽게 뺄 수 있으므로, 많은 검증을 처리하기에 쉽다.
    - 그 대신 손이 많이 간다.

우선 .NET ASP APP 는 생략한다. 왜냐하면, 내 관심 대상이 아니다. 그러므로 System.Windows.Forms.Control.Validating에 대해서 정리하겠다.

어떻게 System.Windows.Forms.Control.Validating 이벤트를 사용할 수 있는가?

  • 모든 컨트롤(모든 컨트롤들을 확인해 보지 않았으나. Control 클래스는 기본적으로 public event EventHandler Validated; public event CancelEventHandler Validating; 를 가지고 있으니, 모든 콘트를이라 해도 맞겠다.)은 Validated, Validating 을 가지고 있으므로, 이 이벤트 핸들러에 핸들러를 붙여 주면 된다.

  • Validating 이벤트 발생 후, Validated 이벤트가 발생하므로, Validating 에서 1차 검증을 하여, 그 결과로 Validated를 발생 시킬지 말지 결정할 수 있다. 이러한 순서 때문에, 일반적으로 Validating 이벤트에서 유효성 검증을 한다.

  • Validating의 이벤트 발생 시점은, 컨트롤에 포커스가 오고 포커스가 떠날 때, 이때가 바로 이벤트 발생 시점 이다.

  • 만약 Validating 이 Cancel 버튼 같은 "취소"로 발생했을 경우, Validated 이벤트까지 가면, 안될 수 있으므로, Validating 이벤트의 인자인 CanleEventArge.Cancel 을 false 로 만들어야 할 경우가 생긴다.

  • 예제코드는 http://msdn.microsoft.com/en-us/library/system.windows.forms.control.validating.aspx 참조하길 바란다.

System.Windows.Forms.Control.Validating 사용 시 주의해야 할 것이 있는가?

포커스가 한 번도 없었던 컨트롤의 경우 유효성 검증 이벤트가 발생 되지 않는다. 그러므로, OK 버튼 등 "실행을 위한 이벤트" 발생시 모든 컨트롤들에 Focus 함수를 호출해 주고. 폼의 Validate를 호출해 줌으로써, 강제로 Validating 이벤트를 발생시켜야 한다.

맛보기 코드

결론

  • 간단하게 하고 싶으면, 실행 이벤트 발생 될 때, 정규표현식으로 유효성 검증하는 게 좋고, 실시간으로, 더욱 다양한 검증을 해야 한다면, Validating 이벤트와 Validated 이벤트에 핸들러를 붙여 주는 게 좋다.

여담

  • 책에선 DataGrid/DataSet 에 대해서도 언급하고 있으나, 필요할 때 찾아 볼 생각으로 생략한다.
  • http://speller.cs.pusan.ac.kr/ 에서 온라인 한국어 맞춤법/문법 검사기를 돌려 보니, 엄청나게 틀려 있었다.


posted by 농사를 짓는 게임 프로그래머 최익필

댓글을 달아 주세요