2011-03-11 18 views
5

की अनुमति है मुझे लगता है कि टेक्स्टबॉक्स में लाइनों के लिए एक सीमा है जो मल्टीलाइन विकल्प के साथ सत्य पर सेट है।मल्टीलाइन टेक्स्टबॉक्स। अधिकतम लाइनों को

मेरे पास एक प्रोग्राम है जो हर कई मिनट में एक ईमेल खाता जांचता है, लेकिन नियंत्रण उद्देश्यों के लिए मैंने एक टेक्स्टबॉक्स लगाया जो इंगित करता है कि क्या कर रहा है।

मेरी जिज्ञासा है, क्या किसी को पता है कि कितनी लाइनों की अनुमति है? और उस लाइन पर पहुंचने पर अपवाद फेंक देता है?

संपादित क्षमा उल्लेख करना भूल गया WinForms

संपादित 2 शायद, किसी एक रास्ते से जानता है पुराने लाइनों को खत्म करने में है, की सराहना की कसा हुआ होगा

+4

WinForms, WPF, ASP.NET, ...? –

+0

अवलोकन के लिए धन्यवाद @ डारिन –

उत्तर

6

टेक्स्ट बॉक्स प्रदर्शित करने वाली रेखाओं की संख्या पर कोई सीमा नहीं है।

हालांकि, वर्ण की संख्या पर नियंत्रण है कि नियंत्रण हो सकता है। इस विषय पर अधिक जानकारी के लिए this question देखें।

+0

तो मुझे लगता है कि, टेक्स्टबॉक्स लाइनों को जोड़ना जारी रखेगा। क्या यह पुरानी लाइनों को मिटा देगा? –

+0

@Chuck, यह पुरानी लाइनों को स्वयं ही मिटा नहीं देगा। यह नई लाइनों को तब तक जोड़ देगा जब तक कि यह अपनी वर्ण सीमा (2,147,483,646 वर्ण) तक पहुंचता है या यह उपलब्ध स्मृति को समाप्त करता है, जो भी पहले होता है। –

+0

आप सही हैं लेकिन इसके बारे में मल्टीलाइन एक सिंगल लाइन नहीं है, और मल्टीलाइन मैक्सलेथेंथ –

0

वहाँ बहुपंक्ति पाठ बॉक्स दोनों पर ऐसी कोई सीमा है WinForms और ASP.NET में। (मुझे डब्ल्यूपीएफ का कोई विचार नहीं है :))

1

यदि आप TextBox.MaxLength संपत्ति को शून्य पर सेट करते हैं, तो टेक्स्ट की मात्रा केवल उपलब्ध स्मृति द्वारा ही सीमित होती है।

+0

मैक्सिलेंथ प्रॉपर्टी का कोई मल्टीलाइन –

+0

के मामले में कोई प्रभाव नहीं पड़ता है, मैक्सलेथेंथ कम से कम WinForms में, चाहे वह सिंगल- या मल्टीलाइन है, टेक्स्टबॉक्स को प्रभावित करता है। – kprobst

+0

यह प्रभावित करता है; ** आप इसे एक बग ** कह सकते हैं लेकिन मुझे लगता है कि इसकी डिजाइन समस्या है। –

1

एक अन्य समाधान:

<TextBox x:Name="txtAddress" 
MaxLines="6" 
TextWrapping="Wrap" AcceptsReturn="True" 
VerticalScrollBarVisibility="Hidden" 
HorizontalScrollBarVisibility="Hidden" 
TextChanged="txtAddress_TextChanged" 
PreviewTextInput="txtAddress_PreviewTextInput" 
PreviewKeyDown="txtAddress_PreviewTextInput"/> 

// ...

private void txtAddress_TextChanged(object sender, TextChangedEventArgs e) 
{ 
TextBox txtBx = sender as TextBox; 
if (txtBx.LineCount > txtBx.MaxLines) 
txtAddress.Text = this._textBeforInput; 
} 

private string _textBeforInput = string.Empty; 
private void txtAddress_PreviewTextInput(object sender, EventArgs e) 
{ 
this._textBeforInput = txtAddress.Text; 
} 
0

मैं जानता हूँ कि इस सवाल का वास्तव में पुराना है और पहले से ही उत्तर दिया गया है, लेकिन एक HTML/ASP.NET के लिए खोज करने वालों के लिए समाधान मैं एक छोटी jsFiddle http://jsfiddle.net/Z3rdZ/2/

एचटीएमएल

बनाया है
<textarea id="limited-lines" maxlines="4"></textarea> 

jQuery

$('#limited-lines').keydown(function(event){ 
    if (event.which == 13) { 
     var numberOfLines = $(this).val().split('\n').length; 
     if(numberOfLines >= $(this).attr('maxlines')){ 
      event.preventDefault(); 
     } 
    } 
}); 
संबंधित मुद्दे