TOC

This article has been localized into Romanian by the community.

Controale de baza:

Controlul TextBox

Controlul TextBox este controlul standard, din WPF, pentru introducerea textului, permite utilizatorului să scrie un simplu text fie pe linie, ca un raspuns de dialog, sau pe multiple linii, ca un editor.

TextBox-ul cu o singură linie de text

Controlul TextBox este folosit atât de ușor încât nu trebuie să folosiți anumite proprietăți pentru a avea un câmp de text editabil. Mai jos este un exemplu concret:

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

Asta e tot ce trebuie să ai într-un câmp de text. Am adăugat textul după rularea exemplului și înainte de a face captura, dar tu poți face asta prin limbajul mark-up la fel de bine, pentru a pre-completa textbox-ul, folosind proprietatea numita Text:

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

Încearcă să dai click-dreapta în TextBox. Va apărea un meniu cu opțiuni ce îți permit să folosești TextBox-ul cu memoria Clipboard. Scurtătura implicită pentru a face undo (pas înapoi) - CTRL + Z, iar cea pentru redo (pas înainte) - CTRL + Y. Ambele ar trebui de asemenea să funcționeze. Aici ai funcționalitatea dată pe tavă, moca! :)

TextBox pe mai multe linii

Daca rulezi exemplul de mai sus, vei observa ca controlul TextBox are, predefinit, o singura linie. Nimic nu se intampla daca apesi Enter, iar, daca vei adauga mai mult text decat incape intr-o singura linie, controlul se va derula. Totusi, transformarea unui TextBox intr-un editor pe mai multe linii este foarte simpla :

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

Am adăugat două proprietăți. TheAcceptsReturn (Acceptă returnare) care face ca TextBox-ul să poată fi pe mai multe linii, permițând utilizarea tastelor Enter/Return pentru a trece la următoarea linie. Cea de-a doua proprietate este TextWrapping ce va face a textul sa fie trecut pe linie nouă atunci când sfârșitul liniei este atins.

Verificarea scrierii (SpellCheck) cu TextBox

Ca un bonus, acest control vine cu verificarea scrierii pentru limba engleză și alte câteva limbi: franceză, germană și limbile spaniole sunt acceptate

Se comportă asemănător cu Microsoft Word, unde erorile de scriere sunt subliniate și poți da click-dreapta pentru a vedea sugestiile alternative. Activarea acestei verificări este foarte simplă:

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

Am folosit înainte, exemplul cu TextBox-ul pe mai multe linii ca o bază și apoi am adăugat două proprietăți noi: proprietatea atașată din clasa SpellCheck numită IsEnabled (este activată), care activează verificarea scrierii pe controlul părinte, dar și proprietatea Language(Limbă), care decide ce limbă va fi folosită pentru verificare.

Lucrul cu selectiile dintr-un TextBox

La fel ca alte controale editabile din Windows, TextBox-ul permite selectarea textului, ca de exemplu: ștergerea unui cuvânt dintr-o dată sau copierea unei bucăți de text în clipboard. TextBox-ul din WPF are câteva proprietăți pentru lucrul cu textu selectat, toate dintre ele pe care le poți citi sau modifica. In exemplul următor, vom citi aceste proprietăți.

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

Exemplul conține două controale de tip TextBox: unul e pentru a edita, iar celălalt este pentru a afișa statusul selecției curente. Pentru asta, am setat proprietatea IsReadOnly ca fiind true(adevărat), pentru a preveni editarea statusului. Ne abonăm la evenimentul SelectionChanged al primului TextBox, acesta fiind rezolvat în Code-behind(codul din spate):

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

Folosim trei proprietăți interesante pentru a face asta:

SelectionStart(Începutul Selecției), ce ne dă poziția curentă a cursorului sau dacă e o selecție, ne dă locul în care începe.

SelectionLength(Lungimea selecției), ce ne dă lungimea selecției curente, în cazul în care există. Altfel va returna 0.

SelectedText(Textul selectat), care ne dă selecția curentă(ca și string), în cazul în care există. Altfel se va returna un string gol.

Modificarea selecției

Toate aceste proprietăți pot avea proprietatea de a fi citite, dar și scries, ceea ce înseamnă că poți se pot modifica. Poți seta SelectionStart și SelectionLength pentru a selecta un interval personalizat din text, sau poți folosi SelectedText pentru a insera și selecta un string. Să nu uiți că TextBox-ul trebuie să aibă focus (exemplu: apelarea metodei Focus(), pentru a funcționa)


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!