2013-08-27 5 views
5

मैं बनाने this Link के साथ अपने काम बेहतर बहु ​​TextBox लेकिन मैं TextBox पाठ काउंटर स्थापित करने के लिएबहुपंक्ति मुद्दा WPF पाठ बॉक्स

label1.Content = textBox1.Text.Length;

ऊपर लाइन काम ठीक है, लेकिन समस्या के साथ

है कि जब मैं प्रेस TextBox में प्रवेश करना चाहते हैं काउंटर यह TextBox काउंटर में 2 वर्णों को बढ़ाएगा।

मैं यह कार्य कैसे कर सकता हूं कृपया मेरी मदद करें।

किसी भी मदद की सराहना की!

उत्तर

4

एंड्री गोर्दीव के जवाब सही (+1 उसके लिए) है, लेकिन आपकी समस्या के लिए एक सीधा समाधान प्रदान नहीं करता है। यदि आप डीबगर के साथ textBox1.Text स्ट्रिंग की जांच करते हैं तो आपको \r\n वर्णों को संदर्भित किया जाएगा। दूसरी तरफ, यदि आप उन्हें सीधे प्रभावित करना चाहते हैं (उदाहरण के लिए .Replace के माध्यम से), तो आपको कुछ भी नहीं मिलेगा।

इस प्रकार, आपके प्रश्न का व्यावहारिक उत्तर है: Environment.NewLine पर भरोसा करें। नमूना कोड:

label1.Content = textBox1.Text.Replace(Environment.NewLine, "").Length; 
3

यदि आप "Enter" तो तुम सिर्फ पाठ बॉक्स पर PreviewKeyDown घटना को संभालने और निम्नलिखित हैंडलर पेस्ट कर सकते हैं पर सिर्फ एक चरित्र की जरूरत है:

private void Txt_OnPreviewKeyDown(object sender, KeyEventArgs e) 
    { 
     if (e.Key == Key.Enter) 
     { 
      var txtBox = e.Source as TextBox; 
      var selectionStart = txtBox.SelectionStart; 
      txtBox.Text = txtBox.Text.Insert(selectionStart, "\n"); 
      txtBox.Select(selectionStart + 1, 0); 
      e.Handled = true; 
     } 
    } 
+0

बस के रूप में एक टिप्पणी। पर्यावरण के पूर्णांक "\ n" का उपयोग करने के लिए कोई विशेष कारण नहीं है। न्यूलाइन। दरअसल, अधिकांश स्ट्रिंग विश्लेषण विधियों द्वारा "\ n" को "अनदेखा" किया जाता है। जाहिर है, ओपी को आपका जवाब पसंद है, भले ही वह "\ n" (नए लाइन वाले विचार किए बिना स्ट्रिंग में वर्णों की संख्या की गिनती) पर भरोसा करके वह प्राप्त नहीं कर सकता है; उसे पर्यावरण पर भरोसा करना चाहिए। न्यूलाइन। मुझे लगता है कि भविष्य में पाठकों के लिए इन विचारों को स्पष्ट किया जाना चाहिए। – varocarbas

+1

मैं हर दूसरे उलझन में हूं: मैंने आपके कोड का परीक्षण किया है और बिल्कुल काम नहीं करता है। दूसरी ओर तार्किक क्या है: जैसा कि कहा गया है कि आप स्ट्रिंग प्रबंधन विधि (आप टेक्स्टबॉक्स में क्या कर रहे हैं) के माध्यम से/n वर्णों को प्रभावित नहीं कर सकते हैं। ऐसा करने में सक्षम होने के मामले में, "प्रभाव दर्ज करें"/नई लाइन गायब हो जाएगी, ओपी क्या चाहता है, वैसे भी नहीं! यह मेरे लिए बहुत अजीब तरीका है। आह! मेरे स्पष्टीकरण के बाद आपके पास एक नया +1 है !? हमम प्रभावशाली! जबरदस्त हंसी। – varocarbas

0

label1.Content = textBox1.Text.Length;

के बजाय नीचे कोड का प्रयोग करें
label1.Text = textBox1.Text.Replace(Environment.NewLine, "").Length.ToString(); 

कृपया मत भूलना जोड़ने के लिए using System.Text;

संबंधित मुद्दे