TOC

This article has been localized into Portuguese by the community.

Controles básicos:

O controle TextBox

O controle TextBox é o controle de entrada de texto mais básico encontrado no WPF, permitindo que o usuário final escreva textos simples, em uma única linha, para entrada de diálogo ou em várias linhas, como um editor.

TextBox de uma linha

O controle TextBox é tão comumente usado que você não precisa usar nenhuma propriedade nele para ter um campo de texto editável completo. Aqui está um exemplo:

<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>

Isso é tudo que você precisa para ter um campo de texto. Eu adicionei o texto depois de executar o exemplo e antes de capturar a imagem da tela, mas você também pode fazer isso através da marcação, para preencher a caixa de texto, usando a propriedade Text:

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

Tente clicar com o botão direito do mouse no TextBox. Você receberá um menu de opções, permitindo que você use o TextBox com a área de transferência do Windows. Os atalhos de teclado padrão para desfazer e refazer (Ctrl + Z e Ctrl + Y) também devem funcionar e toda essa funcionalidade é gratuita!

TextBox de múltiplas linhas

Se você executar o exemplo acima, você notará que o controle TextBox por padrão é um controle de linha única. Nada acontece quando você pressiona Enter e se adiciona mais texto do que o que pode caber em uma única linha, o controle simplesmente rola. No entanto, tornar o controle TextBox em um editor de várias linhas é muito simples:

<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>

Eu adicionei duas propriedades: O AcceptsReturn torna o TextBox em um controle de várias linhas, permitindo que o uso da tecla Enter / Return para ir para a próxima linha e a propriedade TextWrapping, que fará o texto quebrar automaticamente quando o final de uma linha é alcançada.

Verificação ortográfica com o TextBox

Como um bônus adicional, o controle TextBox na verdade vem com a verificação ortográfica automática para o inglês e um par de outros idiomas (a partir da escrita, os idiomas inglês, francês, alemão e espanhol são suportados).

Ele funciona muito bem no Microsoft Word, onde os erros de ortografia são sublinhados e você pode clicar com o botão direito do mouse para alternativas sugeridas. Ativar a verificação ortográfica é muito fácil:

<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>

Usamos o exemplo anterior de caixa de texto de múltiplas linhas como base e adicionamos duas novas propriedades: A propriedade da classe SpellCheck chamada IsEnabled, que simplesmente habilita a verificação ortográfica no controle pai e a propriedade Language, que instrui o corretor ortográfico que idioma usar.

Trabalhando com seleções de TextBox

Assim como qualquer outro controle editável no Windows, o TextBox permite a seleção de texto, por exemplo, para apagar uma palavra inteira de uma só vez ou para copiar uma parte do texto para a área de transferência. O TextBox do WPF tem várias propriedades para trabalhar com textos selecionados, todos eles permitem leitura ou mesmo modificação. No próximo exemplo, veremos estas propriedades:

<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>

O exemplo consiste em dois controles TextBox: um para edição e outro para exibir o status da seleção atual. Para isso, definimos a propriedade IsReadOnly como true para impedir a edição do TextBox. Nos inscrevemos no evento SelectionChanged do primeiro TextBox, que tratamos no Code-behind:

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 + "'";
		}
	}
}

Usaremos três propriedades interessantes para acompanhar isso:

SelectionStart, que nos dá a posição atual do cursor ou se houver uma seleção: Onde ela começa.

SelectionLength, que nos fornece o tamanho da seleção atual, se houver. Caso contrário, apenas retornará 0.

SelectedText, que nos fornece o trecho de texto selecionado, se houver uma seleção. Caso contrário, retorna uma string vazia.

Modificando a seleção

Todas essas propriedades são legíveis e graváveis, o que significa que você pode modificá-las também. Por exemplo, você pode definir as propriedades SelectionStart e SelectionLength para selecionar um intervalo de texto personalizado ou pode usar a propriedade SelectedText para inserir e selecionar uma seqüência de caracteres. Basta lembrar que o TextBox tem que ter o foco, por exemplo chamando primeiro o método Focus() para que isso funcione.


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!