This article has been localized into Turkish by the community.
TextBox kontrolü
TextBox kontrolü WPF'de bulunan en basit metin-girişi kontrolüdür, son kullanıcının tek satırlı(örneğin bir iletişim kutusu) veya çok satırlı(örneğin bir yazı editörü) düz metin girmesine izin verir.
Tek satırlı TextBox
TextBox kontrolü değiştirilebilir yazılar için hiç bir özelliğine dokunmanıza gerek olmayan sıklıkla kullanılan bir şeydir. İşte minimum kullanımı :
<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>
Bir TextBox tanımlamak için bu kadar yazmak yeterli. İçindeki yazıları kodu çalıştırdıktan sonra ekran görüntüsü almadan önce ekledim. Fakat isterseniz Text direktifini kullanarak önceden yazılmış yazılarla da tanımlayabilirsiniz.
<TextBox Text="Hello, world!" />
Çalışırken TextBox'a sağ tıklamayı deneyin, Windows Clipboard'u kullanacak kpyalama menüsü çıkacaktır. Geri alama ve tekrarlama üzerine default tuşlar (Ctrl-Z ve Ctrl-Y) da ayrıca çalışacaktır ve tüm bunlar ücretsiz!
Çok satırlı TextBox
Yukarıdaki örneği çalıştırırsanız TextBox kontrolün default olarak tek satır bir kontrol olduğunu farkedersiniz. Eğer Enter tuşu basıp yazmaya devam ederseniz hala aynı satırın devam ettiğini görürsünüz. Bununla beraber TextBox kontrolünü çok satırlı bir editör yapmak çok basit :
<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>
İki özellik ekledim : AcceptsReturn özelliği TextBox'ı Enter tuşuyla alt satıra geçilebilen çok satırlı kontrol yapar. TextWrapping özelliği ile de satır sonuna gelince devam edilirse otomatik olarak aşağı satıra devam eder.
TextBox'ta Yazım Denetimi
İlave bir bonus olarak TextBox kontrol İngilizce ve bir kaç başka dil için yazım denetimine sahiptir (yazı hazırlandığında İngilizce, Fransızca, Almanca ve İspanyolca destekleniyordu)
Microsoft Word'a benzer çalışması vardır, sağ tıklarsanız tavsiye edilen alternatifler gelir. Yazım denetimini aktif etmek çok kolay :
<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>
Önceki örnekteki çok satırlı TextBox'ı temel olarak kullandık ve iki yeni özellik ekledim: SpellCheck sınıfından IsEnabled bulunduğu kontrolde yazım denetimini aktif eder, Language özelliği ise yazım denetiminde hangi dilin kullanılacağını seçer.
TextBox'ta seçimlerle çalışmak
Windows'taki diğer düzenleme kontrolleri gibi TextBox da örneğin bir kısmı silmek ya da Clipboard'a kopyalamak amacıyla yazı seçimine imkan verir. WPF TextBox seçilen yazı ile ilgili farklı özelliklere sahiptir, bunların hepsi okunabilir ya da değiştirilebilir. Sonraki örnekte bu özellikleri okuyacağız :
<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>
Örnekte iki TextBox kontrolü var: Biri düzenleme yapmak için, diğeri de seçimin durumunu bildirmek için, bu yüzden IsReadOnly değeri true yapılarak içeriğin değiştirilmesi engellenmiş. İlk TextBox'ın SelectionChanged olayını arkaplan kodunda işliyoruz.
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 + "'";
}
}
}
Olayı gerçekleştirirken üç ilginç özellik kullandık:
SelectionStart , eğer bir seçim varsa nereden başladığı yoksa bulunulan kursör pozisyonunu verir.
SelectionLength , bir seçim varsa seçimin karakter uzunluğunu verir. Yoksa 0 değeri döner.
SelectedText , o anda seçili olan yazı varsa o yazıyı verir. Yoksa boş string değeri döner.
Seçimin değiştirilmesi
Tüm bu özellikler okunabilir ve değiştirilebilir özellikler, yani onları değiştirebilirsiniz de. Örneğin SelectionStart ve SelectionLength özelliklerini vererek yazının bir kısmını seçebilirsiniz ve SelectedText özelliğini kullanarak yazıyı değiştirebilir ya da ekleme yapabilirsiniz. Sadece şunu unutmayın, TextBox'a odaklanılmış olmalıdır, örneğin öncesinde Focus() metodunu çağırarak bunu yapabilirsiniz.