This article has been localized into Hungarian by the community.
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.