TOC

This article has been localized into Catalan by the community.

Controls bàsics:

El control TextBlock

El control TextBox és el control més bàsic per a introduir text en WPF, permetent a l'usuari final escriure text pla en una sola línia per a un formulari o com a múltiples línies com en un editor de text.

TextBox d'una sola línia

El control TextBox és una cosa tan usada que de fet no hauràs d'usar propietats en ell per a tenir un camp de text funcional. Aquí hi ha un exemple:

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

Això és tot el que es necessita per a obtenir un camp de text. Vaig agregar el text després d'executar l'exemple i abans de prendre la captura de pantalla, però també es pot aconseguir el mateix utilitzant el markup per a omplir de previ el text utilitzant la propietat Text.

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

Intenti fer clic dret en el TextBox. Li apareixerà un menú amb opcions permetent usar el TextBox amb el Portapapers de Windows. Les tecles d'accés directe per defecte per a desfer i refer (Ctrl+Z i Ctrl+I) també han de funcionar. Tota aquesta funcionalitat és gratuïta!

TextBox multi línia

Si executa l'exemple de dalt, notarà que el control TextBox per defecte és un control d'una sola línia de text. Res succeeix si pressiona la tecla Enter. Si agrega més text que el que cap en una sola línia, el control es desplaça. No obstant això, convertir el TextBox a multi línia és molt senzill.

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

He agregat dues propietats: la propietat AcceptsReturn converteix el TextBox en un control multi-línia permetent l'ús de la tecla Enter/Return per a anar a la següent línia. La propietat TextWrapping fa l'el text continuï en la següent línia una vegada que aconsegueix el final d'una línia.

Revisió ortogràfica amb TextBox

Com a prima addicional, el control TextBox proveeix revisió automàtica d'ortografia per a Inglés i un parell d'altres llenguatges (al moment d'escriure aquest article, Inglés, Francés, Alemany i Español són llenguatges suportats).

Funciona igual a Microsoft Word, on els errors ortogràfics són subratllats i pot fer clic dret per a alternatives suggerides. Habilitar la revisió ortogràfica és molt senzill:

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

Hem emprat l'exemple previ d'un TextBox multi-línia com a base i hem agregat dues noves propietats: la propietat de la classe SpellCheck anomenada IsEnabled habilita la revisió ortogràfica en el control i la propietat Language li indica al revisor ortogràfic que llenguatge utilitzar.

Treballant amb seleccions en el TextBox

Com qualsevol altre control editable en Windows, el TextBox permet la selecció de text; per exemple, per a esborrar una paraula completa o per a copiar text al portapapers. El control TextBox de WPF posseeix unes certes propietats per a treballar amb el text seleccionat, totes elles són modificables. En el següent exemple veurem aquestes propietats:

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

L'exemple consisteix de dos controls TextBox: un per a edició i un altre per a sortida del text seleccionat. Per a això, indiquem la propietat IsReadOnly a true, per a prevenir l'edició del TextBox. Ens subscrivim a l'esdeveniment SelectionChanged on el primer TextBox que es maneja en el 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 + "'";
		}
	}
}

Usem tres propietats interessants per a aconseguir això:

SelectionStart, la qual ens brinda la posició actual del cursor o, si hi ha text seleccionat, on aquest inicia.

SelectionLength, ens brinda la longitud del text seleccionat si hi hagués. Sinó, només retorna 0.

SelectedText, ens retorna el text seleccionat si n'hi hagués. Sinó, es retorna un text buit.

Modificant la selecció

Totes aquestes propietats són llegibles i editables el que significa que pot modificar-les. Per exemple, pot indicar la propietat SelectionStart i SelectionLength per a seleccionar un rang de text personalitzat o pot utilitzar la propietat SelectedText per a inserir i seleccionar un string. Només recordi que el TextBox ha de tenir el focus; per exemple, dient el mètode Focus() perquè això funcioni.


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!