티스토리 뷰

728x90

텍스트박스는 윈도우 폼에서 버튼과 함께 가장 많이 사용하는 컨트롤 중의 하나로 텍스트를 입력받거나 표시할 때 사용합니다. System.Windows.Forms.TextBox 클래스 기반이며 텍스트박스 내부에 내용을 설정하거나 읽을 때는 .Text 속성을 사용합니다. .Text 속성과 함께 텍스트 박스의 내용을 읽거나 설정하는데 .Lines 라는 문자열 배열을 사용할 수도 있습니다. .Lines 라는 문자열 배열은 행 단위로 정보를 저장하므로 단일행 입력 텍스트박스에서는 Lines(0)과 Text는 같은 의미로 사용할 수 있습니다.

        Label1.Text = TextBox2.Lines(0)
        Label1.Text = TextBox2.Text

텍스트박스 컨트롤은 크게 두가지 스타일로 사용할 수 있습니다. .Multiline 속성에 따라서 False면 한 행만을 입력 받는 일반적인 텍스트박스로 사용하고 True면 텍스트 편집기 처럼 여러 라인에 걸친 텍스트를 입력받을 수 있습니다. 위의 예제에서는 좌측 3개가 단일행을 입력받는 텍스트 박스로 최대 2KB(2,048)의 문자를 받을 수 있습니다. 우측의 예제가 다중 행의 텍스트를 다룰 수 있는 것으로 최대 32KB의 데이터를 다룰 수 있습니다. 최대 크기는 .MaxLength 속성을 통해서 사용자가 임의로 통제할 수 있습니다. 

.MaxLength 속성을 통해서 사용자가 입력 문자수를 제한하는 경우 바이트수가 아니라 문자수임에 주의해야 합니다. 예를 들어 길이를 6으로 제한한 경우 "123456", "일이삼사오육"은 모두 문자수 6으로 입력 가능한 문자열입니다. 한글의 경우 바이트수는 2배 이상이지만 글자수로는 동일하다는 것입니다. 한글과 연관되어 기억할만한 속성으로 .ImeMode 속성이 있습니다. 이름을 입력 받을때 자동으로 한글입력 상태로 만들어 주면 국내 사용자들은 한글/영문으로 바꿀 필요가 없으니 편리할 것입니다. 이런 필요에 사용할 수 있는 속성이 .ImeMode 속성입니다. 아래는 .ImeMode 속성에 사용할 수 있는 옵션들입니다.

  • Alpha : 영문 상태로 진입시키고, 영숫자 변형이 없습니다.
  • AlphaFull : 영문 상태로 진입시키고, 영숫자를 한글 폰트로(2배 크기) 변형시킵니다.
  • Hangul : 한글 상태로 진입시키고, 영숫자 변형이 없습니다.
  • HangulFull : 한글 상태로 진입시키고, 영숫자를 한글 폰트로(2배 크기) 변형시킵니다. 은행간에 송금자이름을 이렇게 만들어서 보내는 은행들이 있습니다.
  • Disable : 한글/영문 전환을 금지시킵니다.


텍스트박스 컨트롤의 크기는 단일행 입력의 경우에는 폭은 사용자가 지정한 만큼 적용되지만 높이는 폰트의 크기에 맞추어집니다. 다중행 입력의 경우에는 폭과 높이 모두 사용자가 지정한 만큼 적용할 수 있습니다. 텍스트 박스 컨트롤의 크기와 연관하여 사용할 속성으로는 단일행의 경우에는 .TextAlign을 Left, Center, Right 옵션으로 내용을 텍스트박스의 좌측, 중앙, 우측에 맞추어 출력할 수 있습니다. 다중행의 경우에는 컨트롤의 폭보다 행의 길이가 크면 자동으로 아래 행으로 출력할 여부를 제어하는 .WordWrap 속성(기본은 True로 False면 컨트롤보다 긴 행의 우측은 보이지 않습니다)과 .ScrollBars 속성이 있습니다. ScrollBars 속성은 Horizontal, Vertical, Both로 지정할 수 있으며 Horizontal의 경우에는 .WordWrap 속성이 False로 되어 있어야 의미가 있습니다.

아래와 같은 텍스트 박스의 속성을 통해서 또다른 스타일을 적용할 수 있습니다.

  • BorderStyle : 위의 예제 좌측 두번째가 FixedSingle이고 나머지 박스는 Fixed3D입니다.
  • PasswordChar : 비밀번호 입력창으로 만들경우 입력 문자 대신 표시할 문자입니다. 위의 좌측 3번째 박스는 * 문자를 입력한 경우로 문자를 입력하지 않으면 일반적인 입력창으로 사용합니다.
  • Readonly : 텍스트박스를 출력용으로만 사용할 때 True로 설정합니다.
  • ForeColor, BackColor : 내용을 표시하는 폰트의 색과 배경색


텍스트 박스는 가장 단순한 형태의 편집기이기 때문에 연관 속성과 메소드도 살펴볼 필요가 있습니다. 대표적으로 자동완성 기능입니다. 사용자들이 동일한 내용을 자주 입력할 가능성이 높다면 입력 후보를 개발자가 설정해 주어서 모든 내용을 입력하지 않더라도 자동 완성 해주어 사용자의 편리함을 도모할 수 있습니다. 아래는 예제 코드입니다.

    Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
        Dim HSource As New AutoCompleteStringCollection()
        HSource.AddRange(New String() {"영화감상", "독서", "음악감상", "노래부르기", "운동", "여행"})
        With TextBox1
            .AutoCompleteCustomSource = HSource
            .AutoCompleteMode = AutoCompleteMode.SuggestAppend
            .AutoCompleteSource = AutoCompleteSource.CustomSource
        End With
    End Sub

폼을 로드하면서 TextBox1 컨트롤에 대해서 자동완성 기능을 부여한 예제입니다. 위의 예제는 HSource라는 오브젝트에 취미로 사용자들이 입력할 만한 후보를 입력하여 TextBox1 컨트롤의 AutoCompleteCustomSource 속성에 설정하고 자동 완성 모드를 나타내는 AutoCompleteMode 속성에 리스트 박스로 후보를 추천하는 Suggest와 입력창 뒤쪽에서 보여주는 Append 모드를 동시에 지정했고 자동 완성 자료를 어디에서 가져올 것인지를 지정하는 AutoCompleteSource 속성에 사용자가 지정한다는 CustomSource를 지정했습니다. 입력창에서 입력한 문자로 시작하는 후보가 있으면 아래의 그림과 같이 표시해 줍니다. 주의할 점은 다중 행 입력에서는 동작하지 않으면 대소문자를 구분하며 단어 단위로 시작부터 일치해야 한다는 점을 유념해야 합니다.


편집과 관련한 기능은 자동완성이외에도 일반 편집기에서 생각할 수 있는 선택, 복사, 붙여넣기등 다양한 기능이 있습니다. 아래는 편집과 관련한 다양한 메소드와 속성입니다.

  • AppendText(문자열) : 현재 텍스트박스 내용 뒤에 문자열을 추가합니다.
  • Clear() : 텍스트박스 내용을 지웁니다.
  • ClearUndo() : 텍스트박스 실행 취소 정보를 지웁니다.
  • Copy() : 현재 텍스트박스에서 선택 부분을 클립보드로 복사합니다.
  • Cut() : 현재 텍스트박스에서 선택 부분을 클립보드로 복사하고 지웁니다.
  • Paste() : 텍스트박스의 현재 위치에 클립보드의 내용을 붙여넣기하거나 선택 부분을 대치합니다.
  • Select(시작, 길이) 텍스트박스 내용의 시작위치에서 길이만큼을 선택 상태로 만듭니다.
  • SelectAll() 텍스트박스 내용 전체를 선택 상태로 만듭니다.
  • .SelectedText현재 선택 상태의 내용
  • .SelectionLength현재 선택 상태의 문자열 길이
  • .SelectionStart현재 선택 상태의 문자열의 시작 위치
  • Undo() : 텍스트박스의 마지막 동작을 실행 취소합니다.


728x90
댓글
최근에 올라온 글
최근에 달린 댓글
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함