연산자 중복정의(operator overload)

VB2005는 VB2003과 달리 연산자 중복정의를 할 수 있다. 다음은 행렬계산에서 곱셈(*)에 대한 연산자 중복정의를 한 코드이다.

이벤트 핸들러 로직을 공유하기

풀다운메뉴와 툴바의 메뉴는 형식이 다른 콘트롤이나, 동일한 기능을 하는 다른 콘트롤이다. 즉, 이 콘트롤들의 대표적인 이벤트인 클릭(click)을 통해서 동일한 일을 하게 된다. 이럴 때 클릭에 대한 이벤트를 공유한다. 과거 VB6에서는 콘트롤배열(control arrays)이란 개념으로 수행했으나, 이제는 컨트롤의 이벤트 메소드의 Handles문을 통하여 구현할 수 있다.

다음의 경우는 풀다운메뉴를 클릭했을 때(mnuWaldram.Click)와 툴바메뉴를 클릭했을 때(WaldramToolStripButton.Click)에 대한 이벤트 핸들러를 공유한 것이다.

설정내용을 외부에 저장하기

프로그램의 설정을 다음 번에도 사용하기 위해서는 프로그램 외부에 설정내용을 저장해야 한다. VB2005부터는 My.Settings라는 클래스를 통해서 설정내용을 저장할 수 있다.
프로젝트 디자이너에서 응용 프로그램 설정을 추가하려면
1. 솔루션 탐색기에서 프로젝트를 선택하고 프로젝트 메뉴에서 속성을 클릭합니다.
2. 설정 창을 선택합니다.
3. 설정 표의 빈 행을 클릭합니다.
4. 이름 열에 설정 이름을 입력합니다. 이름에는 공백을 사용할 수 없습니다.
5. 형식 드롭다운 목록에서 설정의 데이터 형식을 선택합니다.
6. 범위 드롭다운 목록에서 설정 범위를 선택합니다. 설정 범위는 응용 프로그램 또는 사용자가 될 수 있습니다.
7. 값 열에 설정의 기본값을 입력합니다. 값은 선택한 데이터 형식에 적합해야 합니다.

문자열 비교를 효과적으로 하기

문자열이 NULL인 경우를 판단해야 할 때가 많다. 특히 파일명을 입력받는 과정에서 아무값도 넘겨주지 않는 경우도 고려해야 한다.
일반적으로 문자열비교는 그 내용을 가지고 하지만, NULL인지 여부를 판단하는 경우에는 문자열의 길이로 판단하는 것이 훨씬 빠르다.

폼에서 마우스 포인터 모양 바꾸기

오랜 시간이 걸리는 작업을 컴퓨터에게 시킬 경우, 대부분의 프로그램에서는 커서의 모양을 모래시계로 바꾸어 놓는다. 작업이 끝나면 원래의 커서 모양으로 환원시키는 것이 일반적이다.
그럼, 비베닷넷에서 어떻게 커서의 모양을 바꿀까?

폼내의 코드에 아래와 같은 코드를 넣으면 된다.

컬렉션 사용할 때 주의할 점

비주얼베이직 닷넷으로 프로그래밍할 때 컬렉션을  사용하면 간편하게 개체 집합을 다룰 수 있다. 컬렉션을 주로 For Each…Next 문과 함께 사용하게 되는데, 다음의 내용을 주의해야 한다.

  • 컬렉션 수정 불가. GetEnumerator에서 반환된 열거자 개체를 사용하여 요소를 추가하거나 삭제하거나 바꾸거나 다시 정렬하여 컬렉션을 변경할 수는 없다. For EachNext 루프를 시작한 다음 컬렉션을 변경하면 열거자 개체는 유효하지 않게 되고, 다음에 요소에 액세스하려고 하면InvalidOperationException 예외가 발생한다.
  • 컬렉션 요소 수정 불가. 열거자 개체의 Current 속성은 ReadOnly(Visual Basic)이며 각 컬렉션 요소의 로컬 복사본을 반환한다. 이것은 For EachNext 루프에서 요소 자체를 수정할 수 없음을 의미한다. 모든 수정 내용은 Current의 로컬 복사본에만 영향을 주며 내부 컬렉션에 반영되지는 않는다.(중요!)  그러나 요소가 참조 형식인 경우에는 요소가 가리키는 인스턴스의 멤버를 수정할 수 있다. 다음은 이에 대한 예이다.

아래는 안되는 코드

‘그래서 수정한 코드 = 되는 코드

한글 텍스트 파일 읽기

한글 텍스트 파일을 읽기 위해서는 인코딩을 다음과 같이 지정해 주어야 한다.

List와 Dictionary 클래스

.NET Framework v1.1이하에서는 ArrayList와 HashTable을 이용하여 콜렉션을 관리하였다.

ArrayList는 항목이 중복될 수 있는 콜렉션을 관리하며 추가된 순서(인덱스)가 중요한 관리대상이다. 예를 들어 벽체의 구성은 벽돌, 단열재, 방습층, 벽돌 등과 같이 중복되는 재료가 있는 경우이기 때문에 ArrayList를 사용하는 것이 좋다.

HashTable은 항목이 중복될 수 없는 콜렉션을 관리하며 중복되지 않는 키(key)가 중요한 관리대상이다. 예를 들어, 건축재료 전체 목록을 관리하고자 한다면 이름을 키(key)로하여 각 재료의 물성치를 관리할 수 있다.

이 둘을 안전하게 사용하려면 자료형(data type)을 항상 검토하여야 한다.

저장할 자료형을 정하여, 이와 다를 경우 코딩시부터 오류를 발생시키도록 강력한 자료형검토를 보장하는 클래스가 v2.0에서 추가되었다.

Generic.ListGeneric.Dictionary가 바로 새로 추가된 클래스들이다.

———

*주의 : .NET Framework v2.0에 Generic이 추가된 것임. 기존의 ArrayList와 HashTable은 계속사용할 수 있음

Main프로시저로 윈도우 프로그램을 실행시키기

윈도우 프로그래밍에서는 폼을 이용하여 창(윈도우)을 만들어 화면에 보여준다.

시작 폼(form) 없이 윈도우프로그램을 실행시키려면 다음과 같이 하면 된다.

1. 모듈에 Main 프로시저를 정의한다.

2. 방법1 :폼의 메소드를 활용하기

3.방법2 : Application.Run 이용

이 방법으로 윈도우프로그램을 실행시킨 경우, 종료하려면 다음과 같은 메소드를 사용한다.
프로그램을 끝낼 때는 Application.Exit()를 호출한다.

문자열을 읽어서 단어로 나누어 주는 함수 짜기

입력받은 문자열을 쉼표와 빈칸에 따라 단어를 나누어 준다.

여기서 3)과 5)가 많이 비슷하고 중복된 것으로 느낄 것이다.
그래서 어느 한 쪽을 지워버리면 어떤 일이 생길까?
시간이 되시면 한 번씩 해보면 좋을 것 같다.
결론부터 말하자면, 빈 문자열도 하나의 단어처럼 취급될 수 있다.
즉, 원하는 결과를 제대로 얻을 수 없다.

[사용법]