2019. 5. 17. 13:06ㆍVB.NET
예시 - 실행 화면
각 컨트롤의 특정 조건의 개수를 세는 방법은 매우 여러 가지가 있다.
이 중에서 나는 List<T> 컬렉션에 Control을 담아 한 번에 람다식(Lambda Expression) 을 이용하여 해보았다.
첫 번째 - Control을 담을 List<T> 생성하여 Control 할당
List<T> 컬렉션을 선언 하고 Type을 Control로 지정하여 만든다.
여기서 List(Of Control) From { } 와 같이 한 번에 값을 집합으로 채울 수 있게 사용할 수도 있다.
컬렉션 이니셜라이져 라고도 하는데 뜻은 아래와 같다.
컬렉션 이니셜라이저는
컬렉션을 만들고 값의 초기 집합으로 채울 수 있도록 하는
약식 구문을 제공합니다.
컬렉션 이니셜라이저는 알려진 값(예: 메뉴 옵션 또는 범주 목록, 숫자 값의 초기 집합, 일 또는 월 이름과 같은 문자열의 정적 목록 또는 유효성 검사에 사용되는 상태 목록과 같은 지리적 위치)의 집합에서 컬렉션을 만드는 경우에 유용합니다.
<컬렉션 이니셜라이저를 사용한 방법>
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim chkLists As List(Of Control) = New List(Of Control) From {
TextBox1, TextBox2, TextBox3, TextBox4
}
End Sub
<컬렉션 이니셜라이저를 사용x >
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim chkLists As List(Of Control) = New List(Of Control)
chkLists.Add(TextBox1)
chkLists.Add(TextBox2)
chkLists.Add(TextBox3)
chkLists.Add(TextBox4)
End Sub
어쨋든 코드 줄이 적으면 적을 수록 가독성도 좋고 개발하기에 편하기 때문에 난 위의
컬렉션이니셜라이저를 사용한 방법이 좋다..
두 번째 - List<T> 안에 담겨진 컨트롤에서 원하는 값을 Count 한다.
<Linq의 Enumerable.Where 메서드를 이용하여 Count 함>
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim chkLists As List(Of Control) = New List(Of Control) From {
TextBox1, TextBox2, TextBox3, TextBox4
}
Dim cnt As Integer = chkLists.Where(Function(x) x.Text = "").Count
' 위의 코드의 결과 값은 예시와 같다면 2 가 나옴.
End Sub
Dim cnt As Integer = chkLists.Where(Function(x) x.Text = "").Count
위의 이 한 줄로 List 안의 항목의 특정 조건을 Count 하는 구문이 완성 되었다.
이 한줄의 코드를 다른 방식으로 해보자면 아래 처럼 할 수 있을 것이다.
<단순 For each를 통해 조건문을 반복하며 Count>
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim chkLists As List(Of Control) = New List(Of Control) From {
TextBox1, TextBox2, TextBox3, TextBox4
}
Dim cnt As Integer = 0
For Each c As Control In chkLists
If (c.Text = "") Then
cnt += 1
End If
Next
' 위의 코드의 결과 값은 예시와 같다면 2 가 나옴.
End Sub
위의 방식도 물론 결과는 똑같다.
하지만
위의 Linq 를 자주 이용하는 방법을 습관을 들여야 좋을 것 같다. 아직은 많이 익숙하지는 않지만
계속 이렇게 정리를 하다보면... 언젠간 익숙해지겠지..
그리하여 아래 코드와 같이 작성 후 실행 하면
예시에 화면과 같은 결과를 가져올 수 있을 것이다.
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim chkLists As List(Of Control) = New List(Of Control) From {
TextBox1, TextBox2, TextBox3, TextBox4
}
Dim cnt As Integer = chkLists.Where(Function(x) x.Text = "").Count
If (cnt > 0) Then
MessageBox.Show("필수 정보가 모두 입력되지 않았습니다.", "악마성")
Exit Sub
Else
MessageBox.Show("모두 입력 되었습니다!", "악마성")
End If
End Sub
결과물
<실행 화면>
<코드>
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim chkLists As List(Of Control) = New List(Of Control) From {
TextBox1, TextBox2, TextBox3, TextBox4
}
Dim cnt As Integer = chkLists.Where(Function(x) x.Text = "").Count
If (cnt > 0) Then
MessageBox.Show("필수 정보가 모두 입력되지 않았습니다.", "악마성")
Exit Sub
Else
MessageBox.Show("모두 입력 되었습니다!", "악마성")
End If
End Sub
#VB.NET
#VB.NET한번에
#VB.NETLINQ
#VB#LINQ
'VB.NET' 카테고리의 다른 글
VB.NET Ctrl + A 키 입력 받기 (0) | 2019.08.20 |
---|---|
VB.NET/C# DataGridView 특정 로우 중간에 행 삽입하기 (0) | 2019.08.20 |
VB.NET 드래그 앤 드랍 구현 하기 (0) | 2019.06.20 |
VB.NET 기초 사용법 정리 (0) | 2019.06.13 |
VB.NET DataGridView 선택 셀 색깔 색상 변경하기 (0) | 2019.03.28 |