This article has been localized into Hindi by the community.
The TextBox control
TextBox control WPF में पाया जाने वाला सबसे बुनियादी text-input control है, जो end user को dialog input के लिए एक लाइन पर, या एक editor की तरह कई लाइनों में plain text लिखने की अनुमति देता है।
Single-line TextBox
वास्तव में TextBox control आमतौर पर इस्तेमाल की जाने वाली एक ऐसी चीज है जिसे आप इस पर किसी भी properties के उपयोग किये बिना ही, एक पूर्ण विकसित editable text field बना सकते हैं। यहाँ एक स्पष्ट उदाहरण दिया गया है:
<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>
एक text फील्ड बनाने के लिए बस इतना ही आवश्यक है। मैंने sample चलाने के बाद और स्क्रीनशॉट लेने से पहले text लिखा, लेकिन आप textbox को अच्छी तरह से प्री-फिल करने के लिए मार्कअप में Text property का उपयोग भी कर सकते हैं।
<TextBox Text="Hello, world!" />
TextBox में राइट-क्लिक करके देखें। आपको विकल्पों का एक मेनू मिलेगा, जिससे आप विंडोज क्लिपबोर्ड के साथ टेक्स्टबॉक्स का उपयोग कर सकते हैं। Undoऔर Redo करने के लिए डिफ़ॉल्ट कीबोर्ड शॉर्टकट (Ctrl + Z और Ctrl + Y) भी काम करना चाहिए, और यह सभी कार्यक्षमता आपको मुफ्त में मिलती है!
Multi-line TextBox
यदि आप ऊपर दिये गए उदाहरण को चलाते हैं, तो आप देखेंगे कि TextBox control डिफ़ॉल्ट रूप से single-line control है। जब आप Enter दबाते हैं तो कुछ भी नहीं होता है और यदि आप एक line में जो फिट हो सकता है, उससे अधिक text जोड़ें तो control केवल स्क्रॉल करता है। हालाँकि, TextBox control को multi-line editor में बदलना बहुत सरल है:
<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>
मैंने दो properties जोड़ी हैं: AcceptsReturn, TextBox अगली line पर जाने के लिए Enter / Return कुंजी के उपयोग की अनुमति देकर उसे एक multi-line control बनाता है। और TextWrapping property, जो एक line के control के अंत तक पहुंचने पर text को अपने आप wrap (नईं line) में कर देगा।
TextBox में Spell checking
एक अतिरिक्त बोनस के रूप में, TextBox control वास्तव में अंग्रेजी और कुछ अन्य भाषाओं के लिए स्वचालित spell checking के साथ आता है (इस आर्टिकल को लिखते समय तक, अंग्रेजी,) फ्रेंच, जर्मन और स्पेनिश भाषाओं का समर्थन किया जाता है)।
यह बिलकुल Microsoft Word के जैसा काम करता है, जहाँ spelling की गलतियाँ रेखांकित की जाती हैं और आप सुझाए और विकल्पों के लिए इसे राइट-क्लिक कर सकते हैं। spelling checking को Enable करना बहुत आसान है:
<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>
हमने पहले, multi-line textbox उदाहरण का उपयोग आधार के रूप में किया है और फिर मैंने दो नए गुण जोड़े हैं: एक तो SpellCheck वर्ग से जुड़ी property जिसे IsEnabled कहा जाता है, जो parent control पर Spell checking को सक्षम बनाता है, और दूसरी Language property जो यह बताती है कि spell checke को किस भाषा का उपयोग करना है।
TextBox selections के साथ कार्य करना
विंडोज में किसी भी अन्य editable control की तरह, TextBox भी text के selection की अनुमति देता है, उदा। एक बार में एक पूरे शब्द को हटाने के लिए या क्लिपबोर्ड पर text के एक टुकड़े को कॉपी करने के लिए। WPF TextBox में selected text के साथ काम करने के लिए कई गुण हैं, उन सभी को जो आप पढ़ सकते हैं या modify भी कर सकते हैं। अगले उदाहरण में, हम इन गुणों को पढ़ेंगे:
<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 controls शामिल हैं: एक editing के लिए और दूसरा वर्तमान selection स्थिति के आउटपुट के लिए। इसके लिए, इसे रोकने के लिए हमने TextBox कि IsReadOnly property को trueपर सेट किया है। हम पहले टेक्स्टबॉक्स पर SelectionChanged ईवेंट की subscribe कर लेते हैं, जिसे हम 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 + "'";
}
}
}
इसे पूरा करने के लिए हम तीन दिलचस्प गुणों का उपयोग करते हैं:
SelectionStart , जो हमें, यदि कोई selection है तो वर्तमान कर्सर स्थिति देता है जहां से selection शुरू होता है।
SelectionLength , जो हमें वर्तमान selection की लंबाई देता है, यदि कोई हो। अन्यथा यह सिर्फ 0 लौटाएगा।
SelectedText , जो हमें वर्तमान में selected स्ट्रिंग देता है यदि कोई selection है। अन्यथा एक खाली स्ट्रिंग लौटा दी जाती है।
Selectionको संशोधित करना
ये सभी properties readable और writable योग्य हैं, जिसका अर्थ है कि आप इन्हें संशोधित भी कर सकते हैं। उदाहरण के लिए, आप text की एक कस्टम range का चयन करने के लिए SelectionStart और SelectionLength properties सेट कर सकते हैं, या किसी स्ट्रिंग को insert(सम्मलित) करने और select करने के लिए SelectText property का उपयोग कर सकते हैं। बस याद रखें कि TextBox का फोकस होना आवश्यकत है, उदाहरणार्थ: इसके काम करने के लिए सबसे पहले Focus() method को कॉल करें।