방법: 한 개체에서 여러 동작 수행(Visual Basic)

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 문에 있는 개체의 속성이 설정되지 않습니다.

참고 항목

작업

방법: 제어 구조 밖으로 제어 전달(Visual Basic)

방법: 시스템 리소스 해제(Visual Basic)

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

참조

With...End With 문(Visual Basic)

개념

판단 구조(Visual Basic)

루프 구조(Visual Basic)

기타 제어 구조(Visual Basic)

중첩 제어 구조(Visual Basic)

기타 리소스

Visual Basic의 제어 흐름