This article has been localized into Slovak by the community.
Ovládací prvok TextBox
Ovládací prvok TextBox je najzákladnejšou kontrolkou pre vstup textu vo WPF, čo umožňuje koncovému používateľovi zapisovať obyčajný text buď na jeden riadok, pre vstup do dialógu, alebo do viacerých riadkov, ako je editor.
Jednoriadkový TextBox
Ovládací prvok TextBox je tak bežne používaná vec, pri ktorej nemusíte upravovať žiadne vlastnosti, aby ste mali plnohodnotné editovateľné textové pole. Tu je jasný príklad:
<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>
To je všetko, čo potrebujete na získanie textového poľa. Pridal som text po spustení príkladu, ale môžete to urobiť aj pomocou vlastnosti Text, aby bol TextBox už vyplnený pred spustením:
<TextBox Text="Hello, world!" />
Skúste pravý-klik v TextBoxe. Získate menu možností, ktoré vám umožnia používať TextBox so schránkou Windows. Predvolené klávesové skratky pre zrušenie a opakovanie (Ctrl + Z a Ctrl + Y) by tiež mali fungovať a všetky tieto funkcie získate zadarmo!
Viacriadkový TextBox
Ak spustíte uvedený príklad, zistíte, že TextBox je predvolene jednoriadkový. Nič sa nedeje, keď stlačíte Enter a ak pridáte viac textu, než sa vojde do jedného riadku, text sa posúva. Avšak zmeniť TextBox na editor s viacerými riadkami je veľmi jednoduché:
<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>
Pridal som dve vlastnosti: AcceptsReturn urobí TextBox viacriadkovým tak, že povolí použitie klávesy Enter/Return pre prechod na ďalší riadok a vlastnosť TextWrapping, ktorá vytvorí automatické zalomenie textu po dosiahnutí konca riadku.
Kontrola pravopisu v TextBoxe
Ako dodatočný bonus, ovládací prvok TextBox sa skutočne dodáva s automatickou kontrolou pravopisu pre anglický jazyk a niekoľko ďalších jazykov (anglické, francúzske, nemecké a španielske jazyky sú podporované).
Funguje to podobne ako v programe Microsoft Word, kde sú pravopisné chyby podčiarknuté a môžete kliknúť pravým tlačidlom na navrhnuté alternatívy. Povolenie kontroly pravopisu je veľmi jednoduché:
<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>
V predchádzajúcom príklade sme použili viacriadkový TextBox a potom sme pridali dve nové vlastnosti: Priradená vlastnosť z triedy SpellCheck s názvom IsEnabled, ktorá jednoducho umožňuje kontrolu pravopisu rodičovskému prvku a vlastnosť Language, ktorý jazyk sa má používať.
Práca s výberom v textovom poli
Rovnako ako všetky ostatné editovateľné ovládacie prvky v systéme Windows, TextBox umožňuje výber textu, napr. odstrániť celé slovo naraz, alebo skopírovať časť textu do schránky. WPF TextBox má niekoľko vlastností na prácu s vybratým textom, ktoré môžete čítať alebo dokonca upravovať. V ďalšom príklade budeme čítať tieto vlastnosti:
<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>
Príklad sa skladá z dvoch ovládacích prvkov TextBox: Jeden pre editáciu a druhý pre výstup aktuálneho stavu výberu. Preto nastavíme vlastnosť IsReadOnly na true, aby sme zabránili úpravám v druhom TextBoxe. Prihlásime udalosť SelectionChanged na prvý TextBox, ktorú spracovávame v kóde:
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 + "'";
}
}
}
Na dosiahnutie tohto cieľa používame tri zaujímavé vlastnosti:
SelectionStart, čo nám dáva aktuálnu pozíciu kurzora, alebo ak existuje výber: Kde sa začína.
SelectionLength, ktorý nám dáva dĺžku aktuálneho výberu, ak existuje. V opačnom prípade to jednoducho vráti 0.
SelectedText, ktorý nám dáva aktuálne vybratý reťazec, ak existuje výber. V opačnom prípade sa vráti prázdny reťazec.
Úprava výberu
Všetky tieto vlastnosti sú čitateľné a zapisovateľné, čo znamená, že ich môžete tiež upraviť. Môžete napríklad nastaviť vlastnosti SelectionStart a SelectionLength na výber vlastného rozsahu textu, alebo môžete použiť vlastnosť SelectedText na vloženie a výber reťazca. Len si pamätajte, že TextBox sa musí mať fokus, napr. volaním metódy Focus(), aby to fungovalo.