TOC

This article has been localized into Hungarian by the community.

Alap vezérlők:

A TextBox vezérlő

A TextBox vezérlő a WPF-ben található legegyszerűbb beviteli eszköz, ami lehetővé teszi a felhasználónak a szöveg bevitelét egy sorban, az adatbevitelhez, vagy több sorban, mint egy szerkesztő.

Egysoros TextBox

A TextBox egy olyan gyakran használt vezérlő, hogy igazából tulajdonságok sem kellenek hozzá, hogy legyen egy teljesen működőképes szöveges meződ. Itt egy mezei példa:

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

Csak ennyi szükséges egy szöveges mezőhöz. Én a szöveget a program futtatása után és a képernyőkép készítése előtt írtam be, de te előre is bejelölheted, hogy elő-töltődjön a szöveg, a Text tulajdonságban:

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

Klikkelj jobbal a TextBox-ra. Kapni fogsz egy menüt a beállításokról, így pedig használhatod a Windows vágólapját. Az alapértelmezett gyorsbillentyűk a mégse és újra parancsokhoz (Ctrl+Z és Ctrl+Y) ugyanúgy működnek, és ezek a funkciók teljesen szabadon használhatók!

Többsoros 'TextBox' vezérlő

Amennyiben futtatod a fenti példát, észre fogod venni, hogy a 'TextBox' alapértelmezetten egy-soros vezérlőként működik. Semmi sem történik, amikor megnyomjuk az 'enter'-t ( sortörés ) és továbbra is görgeti a tartalmat amikor több szöveget gépelünk, mint amennyi egyszerre belefér a vezérlőbe. Semmi gond, ezt könnyedén tudjuk orvosolni:

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

Két tulajdonságot adtunk hozzá: Az 'AcceptReturn' segítségével most már valóban több soros szöveg beviteli mezőként működik és használhatjuk az Enter/Return billentyűket. A Másik 'TextWrapping' tulajdonság aminek hatására automatikus sortörést aktiváltuk.

Helyesírás ellenőrzés

Ráadásként ha ez nem lenne elég, a 'TextBox' vezérlő képes helyesírás ellenőrzésre, Angol és egy pár másik nyelven is ( mint például: Angol, Francia, Német, és Spanyol amelyek jelenleg támogatottak ).

Pontosan úgy működik, mint a Microsoft Word-ben: a hibás szavakat aláhúzza, amikre az egér jobb gombjával bökve feladja a javasolt javításokat. A helyesírás ellenőrzés bekacsolása igen egyszerű:

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

Felhasználtuk az előző több soros 'TextBox' példánkat és hozzáadtunk két új tulajdonságot. Az első a 'SpellCheck' osztálynak az 'IsEnabled'-je, ami egyszerűen csak bekapcsolja a helyesírás ellenőrzést. A másik pedig a 'Language' ami pedig megadja, hogy az milyen nyelven történjen.

'TextBox' és a szöveg-kijelölések

Mint a legtöbb Windows vezérlő a 'TextBox' is képes kezelni a szöveg kijelöléseket, vagyis tudunk törölni teljes szavakat / mondatokat vagy szövegrészt kimásolni a vágólapra. A WPF-ben a 'TextBox' számos tulajdonsággal rendelkezik ami a szöveg kijelölések működését vezérli, ezek mind kiolvashatók vagy akár be is állíthatók. A következő példában ezeket fogjuk kiolvasni:

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

A példában két 'TextBox'-ot használunk: Elsőt a szöveg bevitelre, másodikat pedig a kijelöléssel kapcsolatos információk megjelenítésére, aminél beállítjuk az 'IsReadOnly' tulajdonságot 'true' ( igaz )-ra, hogy ne lehessen szerkeszteni. Valamint feliratkozunk a 'SelectionChanged' eseményre az első 'TextBox'-nál, amit a c# forráskódban fogunk megadni:

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

Három tulajdonságra van szükségünk a végrehajtáshoz:

SelectionStart, ami a kijelölés kezdő pozícióját adja meg vagy az aktuális kurzor pozíciót amennyiben nincs kijelölve szöveg.

SelectionLength, ami a kijelölt szöveg hosszát adja meg amennyiben van, különben nullát.

SelectedText, ami a kiválasztott szöveget adja vissza illetve egy üres stringet amennyiben nincs kijelölve szöveg.

Kijelölés módosítása

Az összes említett tulajdonság olvasható és írható is egyben, aminek a segítségével akár módosíthatjuk is a kijelölést. Tehát 'kézzel' beállíthatjuk akár a 'SelectionStart' és 'SelectionLength'-et, hogy egy általunk választott rész legyen kijelölve vagy a 'SelectedText' segítségével beszúrhatunk és kijelölhetünk szövegrészt. Figyeljünk arra, hogy a 'TextBox'-nak fókuszban kell lennie ( meghívva a 'Focus()' metódust először ), hogy ez működjön.


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!