TOC

This article has been localized into Korean by the community.

기본 컨트롤:

TextBox 컨트롤

TextBox 컨트롤은 WPF에서 볼 수 있는 가장 기본적인 텍스트 입력 컨트롤입니다. 최종 사용자가 텍스트를 쓰거나, 대화 상자에 한 줄에 입력을 받거나 에디터처럼 여러 줄로 작성할 수 있습니다.

Single-line TextBox

TextBox 컨트롤은 편집 가능한 텍스트 필드를 갖기 위해 어떤 속성을 기술하지 않고도 사용할 수 있는 공통적으로 사용되는 컨트롤입니다. 다음은 가장 간단한 예제입니다.

<Window x:Class="WpfTutorialSamples.Basic_controls.TextBoxSample"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="TextBoxSample" Height="80" Width="250">
    <StackPanel Margin="10">
		<TextBox />
	</StackPanel>
</Window>

이 단순한 코드가 텍스트 필드를 사용하는데 필요한 전부입니다. 샘플을 실행 한 후, 스크린 샷을 찍기 전에 텍스트를 추가했지만, 텍스트 상자를 미리 채우려면 Text 속성을 사용하여 마크 업을 통해 텍스트를 추가 할 수 있습니다.

<TextBox Text="Hello, world!" />

텍스트 상자를 마우스 오른쪽 단추로 클릭하십시오. 옵션 메뉴가있어서 TextBox를 Windows 클립 보드 기능이 있습니다. 실행 취소 및 재실행 (Ctrl + Z 및 Ctrl + Y)을 위한 기본 키보드 단축키도 작동하며 이 모든 기능을 기본적으로 자유롭게 사용할 수 있습니다!

Multi-line TextBox

위 예제를 실행하면 기본적으로 TextBox 컨트롤이 단일 줄 컨트롤이라는 것을 알 수 있습니다. Enter 키를 누를 때 아무 일도 일어나지 않으며 한 줄에 들어갈 수있는 것보다 더 많은 텍스트를 추가하면 컨트롤이 좌우로 스크롤됩니다. 그러나 TextBox 컨트롤을 여러 줄 편집기로 만드는 것은 매우 간단합니다.

<Window x:Class="WpfTutorialSamples.Basic_controls.TextBoxSample"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="TextBoxSample" Height="160" Width="280">
    <Grid Margin="10">
		<TextBox AcceptsReturn="True" TextWrapping="Wrap" />
	</Grid>
</Window>

다음 두 가지 속성을 추가했습니다. AcceptsReturn은 Enter/Return 키를 사용하여 다음 줄로 이동하도록 TextBox를 여러 줄로 만들고, TextWrapping 속성을 사용하면 텍스트가 끝나는 줄까지 자동으로 줄 바꿈됩니다.

TextBox 맞춤법 검사

추가 보너스로, TextBox 컨트롤은 실제로 영어 및 기타 언어 (작성, 영어, 프랑스어, 독일어 및 스페인어 언어 지원)에 대한 자동 맞춤법 검사 기능을 제공합니다.

Microsoft Word에서와 유사하게 맞춤법 오류에 밑줄이 그어져 있으며 마우스 우클릭으로 제시한 대안 단어를 선택할 수 있습니다. 맞춤법 검사를 사용하는 것은 매우 쉽습니다.

<Window x:Class="WpfTutorialSamples.Basic_controls.TextBoxSample"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="TextBoxSample" Height="160" Width="280">
    <Grid Margin="10">
		<TextBox AcceptsReturn="True" TextWrapping="Wrap" SpellCheck.IsEnabled="True" Language="en-US" />
	</Grid>
</Window>

앞선 multi-line TextBox 예제에서 다음 두 가지 새로운 속성을 추가했습니다. 부모 컨트롤에 대한 맞춤법 검사가 가능하게하는 SpellCheck 클래스의 IsEnabled라는 속성과, 어떤 언어의 맞춤법 검사기를 사용할 것인가에 대한 속성입니다.

TextBox 선택 작업

Windows의 다른 편집 가능한 컨트롤과 마찬가지로, TextBox를 사용하면 한 번에 전체 단어를 삭제하거나 클립 보드에 텍스트 일부를 복사하기 위해 텍스트를 선택할 수 있습니다. WPF의 TextBox에는 선택한 텍스트를 활용하기 위한 여러 가지 속성이 있으며, 선택한 텍스트를 읽거나 수정할 수 있습니다. 다음은 선택한 텍스트의 속성을 읽는 예제입니다.

<Window x:Class="WpfTutorialSamples.Basic_controls.TextBoxSelectionSample"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="TextBoxSelectionSample" Height="150" Width="300">
	<DockPanel Margin="10">
		<TextBox SelectionChanged="TextBox_SelectionChanged" DockPanel.Dock="Top" />
		<TextBox Name="txtStatus" AcceptsReturn="True" TextWrapping="Wrap" IsReadOnly="True" />

	</DockPanel>
</Window>

이 예제는 두 개의 TextBox 컨트롤로 구성됩니다. 첫번째는 편집용이고 두번째는 첫번째 TextBox의 텍스트의 선택 상태를 출력하는 컨트롤입니다. 이를 위해 두번째 TextBox의 편집을 방지하기 위해 IsReadOnly 속성을 true로 설정합니다. 우리는 코드 파일에 첫 번째 TextBox에서 SelectionChanged 이벤트를 처리하는 핸들러를 등록합니다.

using System;
using System.Text;
using System.Windows;
using System.Windows.Controls;

namespace WpfTutorialSamples.Basic_controls
{
	public partial class TextBoxSelectionSample : Window
	{
		public TextBoxSelectionSample()
		{
			InitializeComponent();
		}

		private void TextBox_SelectionChanged(object sender, RoutedEventArgs e)
		{
			TextBox textBox = sender as TextBox;
			txtStatus.Text = "Selection starts at character #" + textBox.SelectionStart + Environment.NewLine;
			txtStatus.Text += "Selection is " + textBox.SelectionLength + " character(s) long" + Environment.NewLine;
			txtStatus.Text += "Selected text: '" + textBox.SelectedText + "'";
		}
	}
}

우리는 위와같이 보이기 위해 세 가지 흥미로운 속성을 사용했습니다.

SelectionStart : 현재 커서 위치를 제공하거나 선택 항목이있는 경우 선택블록의 시작 지점입니다.

SelectionLength : 현재 선택 영역의 길이를 제공합니다. 선택영역이 없는 경우 0을 반환합니다.

SelectedText : 선택 항목이 있으면 현재 선택된 문자열을 제공합니다. 그렇지 않으면 빈 문자열이 리턴됩니다.

선택 수정하기

이러한 모든 속성은 읽기 및 쓰기가 가능하므로 수정할 수도 있습니다. 예를 들어 SelectionStart 및 SelectionLength 속성을 설정하여 사용자 지정 텍스트 범위를 선택하거나 SelectedText 속성을 사용하여 문자열을 삽입하고 선택할 수 있습니다. 이 때 반드시 TextBox에 포커스가 있어야 합니다. Focus() 메서드를 먼저 호출한 다음 이 작업을 수행하십시오.


This article has been fully translated into the following languages: Is your preferred language not on the list? Click here to help us translate this article into your language!