This article is currently in the process of being translated into Uzbek (~81% done).
The TextBox control
TextBox boshqaruv elementi WPF-da mavjud bo'lgan eng asosiy matn kiritish elementi bo'lib, foydalanuvchiga bitta satrda oddiy matn yozish yoki muharrir kabi bir nechta satrlarda matn kiritish imkonin beradi.
Bir qatorlik TextBox
TextBox shu qadar tez-tez ishlatiladigan narsaki, siz to'liq o'zgartirilishi mumkin bo'lgan matn maydoniga ega bo'lish uchun unda hech qanday xususiyatdan foydalanishingiz shart emas. Mana bir oddiy misol:
<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>
![A simple TextBox control](/Images/ArticleImages/1/chapters/basic-controls/textbox_simple.png)
Matn maydoni uchun kerak bo'lgan narsa shu xalos. Men matnni namunani ishga tushirgandan so'ng va skrinshot olishdan oldin qo'shdim, lekin siz buni shunday belgilash orqali qilishingiz mumkin buning uchun Text xususiyatidan foydalanib matn maydonini oldindan to'ldirish mumkin:
<TextBox Text="Hello, world!" />
TextBox-da sichqonchaning o'ng tugmachasini bosib ko'ring. Windows almashish buferi bilan TextBox-dan foydalanish imkonini beruvchi variantlar menyusini ko'rasiz. Standart klaviaturaning bekor qilish va qayta bajarish uchun yorliqlari (Ctrl+Z va Ctrl+Y) ham ishlashi kerak va bu funksiyalarning barchasidan bemalol foydalanishingiz mumkin!
Ko'p qatorli TextBox
Agar yuqorifagi namunani ishga tushursangiz, oddiy xolatda TextBox boshqaruv elementi bir qatorli ekanligini sezasiz. Enter tugmasini bosganingizda esa xech nima ro'y bermaydi. Lekin TextBox elementini ko'p qatorli qilish juda ham oson:
<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>
![A TextBox control with multiple lines of text](/Images/ArticleImages/1/chapters/basic-controls/textbox_multiline.png)
Men ikkita xususiyat qo'shdim: AcceptsReturn TextBoxni Enter tumasi bosilganda keyingi qatorga o'tishini ta'minlash orqali ko'p qatorli qiladi va TextWrapping xususiyati esa matn qator o'xiriga yetganda avtomatik keyingi qatorga o'tkazadi.
TextBox bilan imlo tekshiruvi
TextBox boshqaruv elementida bonus tariqasida Ingliz va bir qancha tillarda imlo tekshiruvi mavjud (Ingliz, Fransuz, Nemis va Ispan tillari).
Bu xuddi Microsoft Worddagi kabi ishlaydi: unda imlo xatolari tagiga chiziladi va siz ularga sichqonchaning o‘ng tugmasini bosib, taklif etilgan muqobil variantlarni ko‘rishingiz mumkin. Imlo tekshiruvini yoqish juda oson:
<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>
![A TextBox control with automatic spell checking enabled](/Images/ArticleImages/1/chapters/basic-controls/textbox_spellcheck.png)
Biz ko‘p qatorli matn maydonining oldingi misolini asos sifatida ishlatdik, so‘ngra men ikkita yangi xususiyat qo‘shdim: SpellCheck sinfidan qo‘shilgan IsEnabled xususiyati, u shunchaki ota-element boshqaruvida imlo tekshiruvini yoqadi, hamda Language xususiyati, u imlo tekshiruvi vositasiga qaysi tildan foydalanishni ko‘rsatadi.
TextBox belgilashlari bilan ishlash
Windowsdagi har qanday boshqa tahrirlanadigan boshqaruv elementi kabi TextBox ham matnni belgilab olish imkonini beradi, masalan butun so‘zni birdaniga o‘chirish yoki matnning bir qismini almashinuv buferiga nusxalash imkonini beradi. WPF TextBox belgilangan matn bilan ishlash uchun bir nechta xususiyatlarga ega bo‘lib, ularning barchasini o‘qish yoki hatto o‘zgartirish mumkin. Keyingi misol sifatida ushbu xossalarni o‘qiymiz:
<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>
Misol ikkita TextBox boshqaruv elementidan iborat: biri tahrirlash uchun va biri joriy tanlash holatini chiqarish uchun. Holat TextBoxini tahrirlanishining oldini olish uchun biz IsReadOnly xossasiga true qiymatini o‘rnatamiz . Biz birinchi TextBox uchun SelectionChanged hodisadiga obuna bo‘lamiz va uni biz Code-behind da qayta ishlaymiz:
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 + "'";
}
}
}
![A TextBox control with selection status](/Images/ArticleImages/1/chapters/basic-controls/textbox_selection.png)
Buni amalga oshirish uchun biz uchta qiziqarli xususiyatdan foydalanamiz:
SelectionStart , bu bizga kursorning joriy holatini yoki belgilash mavjud bo'lsa: U qayerdan boshlanadi.
SelectionLength , bu bizga agar belgilash mavjud joriy belgilashning uzunligini beradi. Aks holda u faqat 0 ni qaytaradi.
Tanlangan matn , agar belgilash mavjud bo'lsa, bu bizga hozirda belgilangan satrni beradi. Aks holda bo'sh satr qaytariladi.
Modifying the selection
All of these properties are both readable and writable, which means that you can modify them as well. For instance, you can set the SelectionStart and SelectionLength properties to select a custom range of text, or you can use the SelectedText property to insert and select a string. Just remember that the TextBox has to have focus, e.g. by calling the Focus() method first, for this to work.