TextBox1, TextBox2, Button1, Button2 를 만든다.
TextBox2의 속성을 다음과 같이 설정한다.
이렇게 하면 여러줄을 입력할 수 있는 창이 된다.
MulriLine = True
ScrolBars = Vertical
[예제1] 간단한 속성들 알아두기
TextBox1.ReadOnly = True '내용을 박스에서 직접 수정하지 못한다. 복사는 가능하다.
TextBox1.Enabled = False '비활성화되어 입력, 복사 등이 불가능하게 된다.
TextBox1.Enabled = True '활성화된다.
TextBox1.Visible = False '박스가 보여진다. TextBox1.Hide()도 같은 기능
TextBox1.Visible = True '박스가 보여지지 않는다. 박스의 내용은 그대로 유지된다. TextBox1.Show()도 같은 기능
TextBox1.MaxLength = 12 '12자 까지만 입력을 허용한다.
TextBox1.BorderStyle = BorderStyle.Fixed3D '박스의 모양을 3차원으로 바꾸어 준다.
TextBox1.BorderStyle = BorderStyle.FixedSingle '박스의 모양을 경계선이 있는 1차원으로 바꾸어 준다.
TextBox1.BorderStyle = BorderStyle.None '박스의 모양을 경계선이 없는 1차원으로 바꾸어 준다.
TextBox1.TextAlign = HorizontalAlignment.Left '문자열 좌측정렬
TextBox1.TextAlign = HorizontalAlignment.Right '문자열 우측정렬
TextBox1.TextAlign = HorizontalAlignment.Center '문자열 중앙정렬
[예제2] 비밀번호 입력용으로 사용하기
TextBox1.PasswordChar = "#" '문자를 입력하면 #만 적힌다. Text의 내용은 기억하고 있다.
TextBox1.Text = "12345"
[예제3] 줄바꿈처리
Dim S As String
S = "동물의 종류" & vbCrLf
S &= "돼지" & vbCrLf
S &= "고양이" & vbCrLf
S &= "거위" & vbCrLf
TextBox2.Text = S
vbCrLf는 내장된 상수로서 [한줄 내린다]에 해당하는 문자이다.
위 코드는 아래 처럼 작성할 수도 있다.
TextBox2.Text = "동물의 종류" & vbCrLf
TextBox2.AppendText("돼지" & vbCrLf)
TextBox2.AppendText("고양이" & vbCrLf)
TextBox2.AppendText("거위" & vbCrLf)
[예제4] 위와 같이 TextBox2에 입력된 상태에서
Button2를 누르면 샛째줄의 값(고양이)이 TextBox1에 적혀지도록 해보자.
TextBox1.Text = TextBox2.Lines(2)
줄번호는 맨첫째중이 [0]에 해당한다.
TextBox2.Lines는 문자열의 1차원 배열변수이므로
배열처럼 취급하여 각종 정보를 처리항 수 있다.
TextBox2의 셋째줄의 내용을 "사슴"으로 바꾸고 싶다면
Dim N As Integer = TextBox2.Lines.GetUpperBound(0) '총 줄수-1
Dim S(N) As String
S = TextBox2.Lines()
S(2) = "사슴":TextBox2.Lines = S
TextBox2.Lines(2) = "기러기"
그냥 TextBox2.Lines(2) = "기러기" 처럼 하면 수정되지 않는다.
돼지/고양이/거위 순으로 표시된 것을 정렬하여 거위/고양이/돼지의 순으로 바꾸려면
Dim N As Integer = TextBox2.Lines.GetUpperBound(0) '총 줄수-1
Dim S(N) As String
S = TextBox2.Lines()
S.Sort(S, 1, 3)
TextBox2.Lines = S
[예제5] 문자열의 선택
텍스트박스에 있는 문자열의 일부를 선택하는 예
TextBox1.Text = "01234567890ABCDEFG"
TextBox1.Select() '초점을 TextBox1으로 이동한다.
TextBox1.Select(5, 3) '5번 글짜 부터 3글짜를 선택한다.
초점이 이동하지 않으면 선택영역이 보여지지 않으므로
필히 TextBox1.Select() 를 빼먹지 말아야 한다.
아래와 같이 순서가 바뀌어도 관계 없다.
TextBox1.Select(5, 3)
TextBox1.Select()
위 코드는 아래처럼 작성할 수도 있다.
TextBox1.Text = "01234567890ABCDEFG"
TextBox1.SelectionStart = 5
TextBox1.SelectionLength = 3
TextBox1.Select()
만약 문자열 모두를 선택하고 싶다면
TextBox1.Text = "01234567890ABCDEFG"
TextBox1.SelectAll()
TextBox1에 있는 문자열의 일부를 선택하고 Button2을 누르면
그 내용이 TextBox2에 적혀지도록 해보자.
TextBox2.Text = TextBox1.SelectedText
[예제6] 복사/붙여넣기
텍스트 박스에 커저가 있는 상태에서 마우스의 오른쪽 버튼을 누르면 메뉴가 보여지고
여기서 복사, 붙여넣기, 삭제등의 작업을 할 수 있다.
이런 메뉴를 [팝업메뉴]라고 부른다.
Button1을 누르면 TextBox2에서 선택한 내용이 복사되고
Button2를 누르면 TextBox2의 커져위치 또는 선택한 부분에 복사했던
내용이 붙여넣기되는 코드를 만들어 보자.
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) _
Handles Button1.Click
TextBox2.Copy()
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) _
Handles Button2.Click
TextBox2.Paste()
End Sub
아주 간단하게 에디터 기능을 부여할 수 있다.
복사대신 잘라내기를 하려면 TextBox2.Cut() 을 사용하면 된다.
공부삼아서 위의 코드를 더 복잡하게 처리해 보자.
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) _
Handles Button1.Click
Dim S As String = TextBox2.SelectedText
Clipboard.SetDataObject(S)
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) _
Handles Button2.Click
TextBox2.Paste()
End Sub
또는
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) _
Handles Button1.Click
Dim S As String = TextBox2.SelectedText
Clipboard.SetDataObject(S)
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) _
Handles Button2.Click
Dim S As String = Clipboard.GetDataObject.GetData("System.String")
TextBox2.SelectedText = S
End Sub
위의 코드에서 GetData("System.String")은 클립보드에 있는 데이터중 문자열 데이터를 가져온다는 의미이다.
[예제7] 한영 입력모드의 지정
프로그램을 실행시키면 텍스트박스의 초기 입력모드는 영문이 된다.
그러나 한글로 입력할 것이 뻔한데도 그냥 두는 것은 못마땅하다.
아래와 같이 하면 TextBox1의 초기 입력모드를 한글로 지정해 주고 있다.
물론 나중에 한/영 변환은 가능하다.
아래 프로시져는 폼이 맨처음 로드될 때 실행되는 것으로서 폼을 클릭하면 만들어 진다.
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) _
Handles MyBase.Load
TextBox1.ImeMode = ImeMode.Hangul
TextBox2.ImeMode = ImeMode.Alpha
End Sub