TOC

This article has been localized into French by the community.

Les contrôles de base:

Le contrôle TextBox

Le contrôle TextBox est le contrôle de saisie de texte le plus basique de WPF. Il permet à l'utilisateur de saisir du texte sur une ligne, pour répondre à une question ou sur plusieurs lignes comme avec un éditeur de texte.

TextBox mono-ligne

Le contrôle TextBox est utilisé si communément que vous n'avez aucune propriété à définir pour obtenir un champs d'édition prêt à l'emploi. Voici 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>

C'est tout ce dont vous avez besoin pour obtenir un champ de texte. Nous avons ajouté le texte après l'exécution de l'exemple et avant de prendre une copie d'écran. Vous pouvez cependant le faire depuis le code XAML afin de pré-remplir le contrôle en utilisant la propriété Text :

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

Essayez de faire un clic droit sur le TextBox. Vous obtenez un menu d'options qui vous permet d'utiliser le TextBox avec le presse-papier Windows. Les raccourcis clavier pour annuler ou rétablir (Ctrl+Z et Ctrl+Y) devraient également fonctionner. Toutes ces fonctionnalités sont obtenues sans ajout de code!

TextBox multi-lignes

Si vous exécutez l'exemple ci-dessus, vous remarquerez que le TextBox est mono-ligne par défaut. Il ne se passe rien lorsque vous pressez Entrée et si vous ajoutez plus de texte que la quantité visible sur une seule ligne, le contrôle va faire défiler le texte. Cependant, transformer le contrôle en un éditeur multi-lignes est très simple :

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

Nous avons ajouté deux propriétés: AcceptReturn qui transforme la TextBox en un contrôle multi-lignes en autorisant l'utilisation de la touche Entrée afin de se déplacer sur la ligne suivante, et la propriété TextWrapping, qui va permettre de scinder le texte automatiquement lorsque la fin de ligne est atteinte.

La correction automatique avec le contrôle TextBox

En bonus, le contrôle TextBox est livré avec une correction automatique pour l'anglais ainsi que de nombreux autres langages (pour l'écriture, l'anglais, le français, l'allemand et l'espagnol sont supportés).

Cela fonctionne plus ou moins comme avec Microsoft Word, où les erreurs de saisie sont soulignées et où vous pouvez obtenir la liste des suggestions alternatives avec un clic droit. Activer la correction automatique est très simple :

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

Nous avons utilisé le TextBox multi-lignes précédent et nous lui avons ajouté deux propriétés : la propriété attachée de la classe SpellCheck appelée IsEnabled qui active simplement la correction automatique du contrôle parent, et la propriété Language qui informe le correcteur de la langue à utiliser.

La sélection dans les TextBox

Comme pour les autres contrôles d'édition de Windows, le TextBox autorise la sélection de texte, c.à.d. supprimer un mot entier ou copier une partie du texte dans le presse-papier. Le TextBox de WPF a plusieurs propriétés pour travailler avec le texte sélectionné. Chacune de ces propriétés peut être lue ou modifiée. Dans l'exemple suivant nous allons lire ces propriétés :

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

Cet exemple consiste en deux contrôles TextBox : un pour l'édition et l'autre pour afficher l'état de la sélection. Pour cela, nous définissons la propriété IsReadOnly à true afin d'empêcher l'édition dans le TextBox affichant l'état de la sélection. Nous enregistrons l'événement SelectionChanged du premier TextBox que nous gérons depuis le code C# :

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

Nous utilisons trois propriétés intéressantes pour accomplir ceci :

SelectionStart, qui nous donne la position actuelle du curseur, ou s'il y a une sélection, le début de la sélection.

SelectionLength, qui nous donne la longueur de la sélection courante, si sélection. Ou bien retourne simplement 0.

SelectedText, qui nous donne la chaîne actuellement sélectionnée, si sélection. Ou une chaîne vide si aucune sélection.

Modifier la sélection

Toutes ces propriétés peuvent être à la fois lues et ré-écrites, ce qui signifie que vous pouvez les modifier. Par exemple, vous pouvez définir les propriétés SelectionStart et SelectionLength pour sélectionner une portion de texte, ou bien vous pouvez utiliser la propriété SelectedText pour insérer et sélectionner une chaîne de caractères. Souvenez-vous simplement que la TextBox doit être sélectionnée, ce que la méthode Focus() permet d'effectuer.

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!