방법: 한 개체에서 여러 동작 수행
업데이트: 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)