This article is currently in the process of being translated into Arabic (~83% done).
The TextBox control
إن عنصر تحكم مربع النص هو أكثر عناصر ادخال النصوص أهمية في WPF, والتي تسمح للمستخدم بكتابة نصوص بسيطة ، إما سطر أحادي كدخل لمربع حوار , أو متعدد الأسطر كمحرر النصوص.
مربع النص(TextBox) أحادي السطر
إن عنصر التحكم مربع النص شيئ شائع الاستخدام لدرجة أنه لا حاجة لك لاستخدام أي خاصية له.للحصول على حقل نصي قابل للتنسيق بشكل تام : إليك المثال الواضح التالي :
<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>
هذا كل ما انت بحاجة اليه لتحصل على مربع نص . لقد أضفت النص بعد تشغيل المثال و قبل أخذ لقطة شاشة , إلا انه بإمكانك فعل ذلك عبر الوسوم أيضاً: لتقوم بتعبئة مربع النص مسبقاً باستخدام خاصية النص.
<TextBox Text="Hello, world!" />
حاول الضغط ضمن مربع النص. ستحصل على قائمة من الخيارات, التي تتيح لك استخدام مربع النص مع حافظة الويندوز. الاختصارات لعمليات التراجع و الغاء التراجع (Ctrl+Z and Ctrl+Y) أيضا لابد لها أن تعمل و جميع هذه الوظائف تحصل عليها بالمجان!
مربع نصي(TextBox) متعدد السطور
إذا قمت بتنفيذ المثال السابق, ستلاحظ أن عنصر تحكم مربع النص افتراضيا عبارة عن سطر واحد فقط. حتى إن ضغطت زر الادخال Enter لن يحدث ينول مؤشر الكتابة سطرا جديدا و في حال اضفت نصا حروفه لا تتسع في مربع النص سيظهر لك شريط تمرير للعنصر.ومع ذلك فإن من السهولة بمكان أن تجعل مربع النص من عدة الاسطر .
<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>
لقد أضفت خاصيتين: تجعل خاصية TextBox AcceptsReturn في تحكم متعدد الخطوط من خلال السماح باستخدام مفتاح Enter/Return للانتقال إلى السطر التالي، وخاصية TextWrapping، والتي تجعل النص يغلف تلقائيًا عند نهاية سطر يتم الوصول إليه.
Spellcheck with TextBox
كمكافأة إضافية، يأتي التحكم في TextBox في الواقع مع فحص تهجئة تلقائية للغة الإنجليزية ولغتين أخريين (اعتبارًا من الكتابة، يتم دعم اللغات الإنجليزية والفرنسية والألمانية والإسبانية).
إنها أقرب ما يمكن في عملها لبيئة مايكروسوفت وورد , حيث يضع خطا تحت الأخطاء الإملائية، و يكون بإمكانك نقره بزر الفأرة اليميني : لتحصل على بدائل مقترحة للخطأ. إن تفعيل ميزة تصحيح الأخطاء الإملائية سهل جداً.
<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>
لقد استخدمنا مثال مربع النص متعدد السطور السابق كقاعدة ثم قمت بعد ذلك بإضافة خاصيتين : الخاصية المرافقة من صف تفحص الأخطاء الإملائية و هي IsEnabled , فهي ببساطة تتيح إمكانية فحص الأخطاء الإملائية في متحكم الاب , و خاصية اللغة التي تُعلِم متفحص الأخطاء الإملائية أي اللغات ليستخدم.
Working with TextBox selections
تمامًا مثل أي تحكم قابل للتحرير في Windows، يسمح TextBox باختيار النص، على سبيل المثال حذف كلمة كاملة في وقت واحد أو نسخ جزء من النص إلى الحافظة. يحتوي WPF TextBox على العديد من الخصائص للعمل مع نص محدد، وكلها يمكنك قراءتها أو حتى تعديلها. في المثال التالي، سنقرأ هذه الخصائص:
<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>
يتكون المثال من اثنين من عناصر التحكم في TextBox: أحدهما للتحرير والآخر لإخراج حالة الاختيار الحالية إلى. لهذا، قمنا بتعيين خاصية IsReadOnly لتكون صحيحة، لمنع تحرير الحالة TextBox. نشترك في حدث SelectionChange في أول TextBox، والذي نتعامل معه في Code-behind:
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 + "'";
}
}
}
We use three interesting properties to accomplish this:
SelectionStart , which gives us the current cursor position or if there's a selection: Where it starts.
SelectionLength , which gives us the length of the current selection, if any. Otherwise it will just return 0.
SelectedText , which gives us the currently selected string if there's a selection. Otherwise an empty string is returned.
Modifying the selection
كل هذه الخصائص قابلة للقراءة والكتابة، مما يعني أنه يمكنك تعديلها أيضًا. على سبيل المثال، يمكنك ضبط خصائص SelectionStart و SelectionLength لتحديد نطاق مخصص من النص، أو يمكنك استخدام خاصية SelectedText لإدخال وتحديد سلسلة. فقط تذكر أن TextBox يجب أن يكون له تركيز، على سبيل المثال من خلال استدعاء طريقة Focus () أولاً، حتى يعمل هذا.