다음을 통해 공유


방법: 한 개체에서 여러 동작 수행

업데이트: 2007년 11월

Visual Basic에서는 일반적으로 개체의 메서드 중 하나를 호출하거나 개체의 속성 중 하나에 액세스하는 모든 문에 해당 개체를 지정해야 합니다. 그러나 문이 모두 동일한 개체에 대해 동작하는 경우에는 With...End With 구조를 사용하여 모든 문에 대해 한 번씩 개체를 지정할 수 있습니다. 이렇게 하면 프로시저가 더 빨리 실행되고 입력을 반복할 필요가 없습니다.

예제

다음 예제에서는 프로시저 인수의 값에 따라 Label의 전경색 및 글꼴 스타일을 설정합니다.

Imports draw = System.Drawing
' The preceding statement must appear at the beginning of the source file.
Dim alertLabel As New System.Windows.Forms.Label
Sub alertUser(ByVal value As Long)
    With alertLabel
        If value = 0 Then
            .ForeColor = draw.Color.Red
            .Font = New draw.Font(.Font, draw.FontStyle.Bold Or draw.FontStyle.Italic)
        Else
            .Forecolor = draw.Color.Black
            .Font = New draw.Font(.Font, draw.FontStyle.Regular)
        End If
    End With
End Sub

Or 연산자(Visual Basic)를 사용하면 글꼴 스타일을 결합할 수 있습니다. 이 작업에서는 비트 플래그의 원하는 조합을 지정합니다. And 연산자(Visual Basic)의 경우는 모든 FontStyle 열거형 멤버가 서로 다른 비트를 사용하므로 0을 생성하게 됩니다.

또한 Imports 문(.NET 네임스페이스 및 형식)을 사용하면 import 별칭 draw를 설정할 수 있습니다. 이러한 별칭은 System.Drawing 멤버에 대한 각 참조를 보다 간결하고 읽기 쉽게 만듭니다.

또한 다음 코드처럼 한 문의 내부에 다른 문을 배치하여 With...End With 문을 중첩할 수도 있습니다.

Sub setupForm()
    Dim anotherForm As New System.Windows.Forms.Form
    Dim button1 As New System.Windows.Forms.Button
    With anotherForm
        .Show()
        .Top = 250
        .Left = 250
        .ForeColor = System.Drawing.Color.LightBlue
        .BackColor = System.Drawing.Color.DarkBlue
        .Controls.Add(button1)
        With .Controls.Item(1)
            .BackColor = System.Drawing.Color.Thistle
            .Text = "Text on button1"
        End With
    End With
End Sub

그러나 중첩된 With 문에서 이 구문은 중첩된 개체를 참조하므로 외부 With 문에 있는 개체의 속성이 설정되지 않습니다.

참고 항목

작업

방법: 제어 구조 밖으로 제어 전달

방법: 시스템 리소스 해제

방법: 정규화 경로가 긴 개체에 대한 액세스 속도 개선

개념

판단 구조

루프 구조

기타 제어 구조

중첩 제어 구조

참조

With...End With 문(Visual Basic)

기타 리소스

Visual Basic의 제어 흐름