WPF टेक्स्टबॉक्स के लिए बहुस्तरीय


364

मैं कुछ प्रतिक्रिया भेजने के लिए एक ऐप विकसित कर रहा हूं।

मूल रूप से मैं TextBoxटिप्पणियों के लिए प्रयास कर रहा हूं , लेकिन मैं WinForms के लिए उपयोग किया जाता हूं MultiLine=true। मैंने MinLines3 पर सेट किया है, जो वहां हो रहा है, लेकिन अधिमानतः मैं इसे पसंद करूंगा यदि उपयोगकर्ता इस ब्लॉक में कहीं भी टाइप करने में सक्षम है - जैसे कि प्रेस दर्ज करें और डॉट पॉइंट की तरह करें। उदाहरण के लिए:

- Item 1        blah
- Item 2                blahlb lahbvl   d

लेकिन फिलहाल पाठ सभी एक पंक्ति पर रहता है।

- Item 1         blah - Item 2                      blahb blahb blah

इन टिप्पणियों को तब भेजे गए ईमेल के मुख्य भाग को भरने में मदद मिलेगी। यह व्यर्थ हो सकता है अगर मैं इस स्ट्रिंग को ईमेल बॉडी स्ट्रिंग में डालते समय आसानी से एक ही स्वरूपण नहीं रख सकता (ताकि ऐसा लगे कि जब यह टाइप किया जाता है तो इसे भेजा जाता है)।

क्या मैं वह हासिल कर सकता हूं जो मेरे बाद है या क्या मुझे इसे एक पंक्ति के सभी पाठ के रूप में छोड़ना है?

जवाबों:


757

सक्षम करें TextWrapping="Wrap"और AcceptsReturn="True"अपने टेक्स्ट बॉक्स पर।

आप भी सक्षम करना चाहते हैं AcceptsTabऔर कर सकते SpellCheck.IsEnabledहैं।


1
हे @itowlson अगर मैं आपके काम के साथ मल्टीलाइन टेक्स्टबॉक्स को बेहतर तरीके से बना रहा हूं, लेकिन अगर मैं टेक्स्ट label1.Content = textBox1.Text.Length;लाइन टेक्स्ट काउंटर को इस लाइन के साथ सेट करना चाहता हूं, लेकिन जब मैं टेक्स्टबॉक्स में प्रवेश करता हूं तो 2 अक्षर बढ़ जाएंगे। मैं यह कार्य कैसे कर सकता हूं कृपया मेरी मदद करें।
जे। शुक्ला

2
ऐसा इसलिए होता है क्योंकि न्यूलाइन दो वर्ण (CR / LF) है। यदि आप इसे एकल चरित्र के रूप में मानना ​​चाहते हैं, तो कुछ ऐसा करें textBox1.Text.Replace("\r\n", " ").Length। हालांकि सावधान रहें: यदि इसे उपयोगकर्ता प्रतिक्रिया के रूप में माना जाता है क्योंकि आपके बैक एंड में अक्षरों की संख्या सीमित है, तो आपको सीआर / एलएफ को दो वर्णों के रूप में गिनने की आवश्यकता हो सकती है, अगर यह है कि बैक एंड इसे कैसे गिनेंगे!
itowlson

मैं इस समस्या को इस लिंक stackoverflow.com/questions/18459908/…
Jay Shukla

1
यह भी सुनिश्चित करें कि
वर्टिकलकंटेंट एग्लेन्मेंट

1
स्क्रॉल पट्टी रखने के लिए स्क्रॉलव्यूअर घटक भी जोड़ें।
बोर्को जोरोविच

34

इसके अलावा, अगर, मेरी तरह, आप XAML में सीधे नियंत्रण जोड़ते हैं (संपादक का उपयोग नहीं कर रहे हैं), तो आप निराश हो सकते हैं कि यह उन दो गुणों को सेट करने के बाद भी उपलब्ध ऊंचाई तक नहीं खिंचेगा।

TextBox खिंचाव बनाने के लिए, सेट करें Height="Auto"

अपडेट करें:

रेट्रोस्पेक्ट में, मुझे लगता है कि यह एप्को संसाधनों में कहीं न कहीं आवेदन के लिए ऊंचाई को निर्दिष्ट करने वाले टेक्स्टबॉक्स के लिए एक डिफ़ॉल्ट शैली के लिए आवश्यक है। यह सार्थक हो सकता है अगर यह आपकी मदद करे।


19

यहां वह नमूना है XAMLजो TextBoxबहु-पाठ को स्वीकार करने की अनुमति देगा और इसका उपयोग स्वयं स्क्रॉलबार्स करता है:

<TextBox
Height="200"
Width="500"
TextWrapping="Wrap"
AcceptsReturn="True"
HorizontalScrollBarVisibility="Disabled"
VerticalScrollBarVisibility="Auto"/>

12

@Andre Luus के विपरीत, सेटिंग खिंचाव Height="Auto"नहीं बनाएगी TextBox। मुझे जो हल मिला वह सेट करना थाVerticalAlignment="Stretch"


1
'VerticalAlignment' के लिए डिफ़ॉल्ट मान है 'खिंचाव' का उल्लेख MSDN । और हां, इसने वास्तव में मेरे लिए काम किया। यह उस नियंत्रण पर निर्भर हो सकता है जिसे आपने टेक्स्टबॉक्स में रखा था, लेकिन क्या यह कुछ गैर-मानक था?
आंद्रे लुस

1
एक और संभावना यह है कि आपके पास टेक्स्टबॉक्स के लिए एक डिफ़ॉल्ट शैली है जो उस टेक्स्टबॉक्स के दायरे में कहीं परिभाषित है जो वर्टिकल-एलिग्नेमेंट के लिए एक अलग मान परिभाषित करता है। मैं स्नूप के साथ जांच करूंगा।
आंद्रे लुस ने

1
यदि कंटेनर तय हो गया है, तो ऊंचाई ऑटो काम नहीं करेगा। शीर्ष करने के लिए हर माता-पिता कंटेनर का विस्तार करने में सक्षम होना चाहिए। स्क्रॉलबार में रैपिंग भी काम करती है।
ली लोविरे

5

केवल संपत्ति के लिए WPF में इसी

संपत्ति की जीत :TextBox.Multiline = true

है WPF संपत्ति: TextBox.AcceptsReturn = true

<TextBox AcceptsReturn="True" ...... />

अन्य सभी सेटिंग्स, जैसे VerticalAlignement, WordWrapआदि, केवल यह नियंत्रित करती हैं कि पाठ बॉक्स UI में कैसे इंटरैक्ट करता है लेकिन Multilineव्यवहार को प्रभावित नहीं करता है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.