TOC

This article is currently in the process of being translated into Uzbek (~81% done).

Basic controls:

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>

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>

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>

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

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.


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!
Table of Contents