2012-11-10 19 views
20

पर डेटा की नई लाइन जोड़ना मैं चैट क्लाइंट कर रहा हूं, और वर्तमान में मेरे पास एक बटन है जो क्लिक करते समय एक बहु-पंक्ति टेक्स्टबॉक्स में डेटा प्रदर्शित करेगा। क्या यह बहु-पंक्ति टेक्स्टबॉक्स में डेटा जोड़ने का एकमात्र तरीका है? मुझे लगता है कि यह बेहद अक्षम है, क्योंकि यदि वार्तालाप वास्तव में लंबा हो जाता है तो स्ट्रिंग वास्तव में भी लंबे समय तक मिल जाएगी।टेक्स्टबॉक्स

private void button1_Click(object sender, EventArgs e) 
     { 
      string sent = chatBox.Text; 
      displayBox.Text += sent + "\r\n"; 

     } 
+2

मैं एक साधारण टीसीपी चैट क्लाइंट बनाने के समान मुद्दे में भाग गया। मेरा समाधान था जब भी मैंने एक संदेश जोड़ा और जब यह एक निश्चित दहलीज से अधिक हो गया तो सबसे पुरानी रेखाओं को हटा दें। मैं इसे एक टिप्पणी के रूप में पोस्ट कर रहा हूं क्योंकि यह अभी भी बहुत अक्षम है लेकिन यह केवल जोड़ने के लिए एक विकल्प है। –

+0

मैंने इसके बारे में सोचा लेकिन –

+1

बेहतर तरीका होना चाहिए यदि आप सबसे सरल चैट अनुप्रयोगों पर विचार करते हैं जो कि वे कितने काम करते हैं। एओएल इंस्टेंट मैसेंजर चैट विंडो जैसी कुछ चीज़ों के बारे में भी सोचना अभी भी लंबा और लंबा हो रहा है।असल में एक ही अवधारणा। –

उत्तर

54

आप WinForms का उपयोग करते हैं:

उपयोग पर AppendText(myTxt) विधि TextBox इसके बजाय (.NET 3.5+):

private void button1_Click(object sender, EventArgs e) 
    { 
     string sent = chatBox.Text; 

     displayBox.AppendText(sent); 
     displayBox.AppendText(Environment.NewLine); 

    } 

टेक्स्ट में स्वयं आमतौर पर कम स्मृति पदचिह्न होता है (आप f.ex. के भीतर बहुत कुछ कह सकते हैं। 10 किलो जो "कुछ नहीं" है)। टेक्स्टबॉक्स बफर में मौजूद सभी पाठ प्रस्तुत नहीं करता है, केवल दृश्य भाग है, इसलिए आपको अंतराल के बारे में ज्यादा चिंता करने की आवश्यकता नहीं है। धीमे ऑपरेशन टेक्स्ट डालने जा रहे हैं। पाठ संलग्न करना अपेक्षाकृत तेज़ है।

यदि आपको सामग्री की अधिक जटिल हैंडलिंग की आवश्यकता है तो आप टेक्स्टबॉक्स के साथ StringBuilder का उपयोग कर सकते हैं। यह आपको टेक्स्ट को संभालने का एक बहुत ही प्रभावी तरीका देगा।

0

क्योंकि आपने यह निर्दिष्ट नहीं किया है कि आप किस फ्रंट एंड (जीयूआई तकनीक) का उपयोग कर रहे हैं, यह एक विशिष्ट सिफारिश करना मुश्किल होगा। डब्ल्यूपीएफ में आप एक सूची बॉक्स बना सकते हैं और चैट की प्रत्येक नई लाइन संग्रह के अंत में एक नया listboxitem जोड़ सकते हैं। यह link कुछ सुझाव प्रदान करता है कि आप Winforms वातावरण में एक ही परिणाम कैसे प्राप्त कर सकते हैं।

+0

मेरा क्या मतलब है, मैंने कहा कि सी # इसका एक फॉर्म –

+0

मैं भी सी # में विकसित हूं, हालांकि मैं विंडोज़ फॉर्म (विनफॉर्म) का उपयोग नहीं करता हूं। मैं डब्ल्यूपीएफ और एक्सएएमएल का उपयोग करता हूं। मैंने एमवीसी का उपयोग एचटीएमएल 5 और जावास्क्रिप्ट के साथ भी विकसित किया है जो व्यवसाय तर्क के लिए सी # का उपयोग करते हैं। इन ग्राफिकल यूजर इंटरफेस प्रौद्योगिकियों में से प्रत्येक के पास अलग-अलग नियंत्रण होते हैं जिन्हें आप अपनी चैट विंडो के लिए पुन: लागू कर सकते हैं। – alan

+0

मुझे लगता है कि आप WinForms के बारे में बात कर रहे थे लेकिन एलन सही है, बस कह रहा है कि सी # फॉर्म कुछ हद तक संदिग्ध है। आप WinForm, WebForm, WPF का अर्थ हो सकते थे ... सूची उन रूपों पर जाती है जो सी # कोड को कार्यान्वित कर सकती हैं। –

24

निम्न तरीकों

  1. कोड (जिस तरह से आप का उल्लेख किया है) से कर रहे हैं ->

    displayBox.Text += sent + "\r\n"; 
    

    या

    displayBox.Text += sent + Environment.NewLine; 
    
  2. यूआई
    से क) डब्ल्यूपीएफ

    Set TextWrapping="Wrap" and AcceptsReturn="True" 
    

    प्रेस पाठ बॉक्स और नई लाइन बनाया जाएगा करने के लिए कुंजी दर्ज

    ख) Winform पाठ बॉक्स

    Set TextBox.MultiLine and TextBox.AcceptsReturn to true 
    
+0

मैं एक radTextBox और पर्यावरण का उपयोग कर रहा था। न्यूलाइन उसमें काम नहीं करती है लेकिन \ r \ n करता है। इस उत्तर में कुछ अलग-अलग विधियां शामिल हैं जो इसे चारों ओर अधिक उपयोगी बनाती हैं। – Brad

0

मुझे लगता है कि यह विधि बहुत सारे टाइपिंग को बचाती है, और बहुत सारे टाइपो को रोकती है।

स्ट्रिंग nl = "\ r \ n";

txtOutput.Text = "पहली पंक्ति" + nl + "दूसरी पंक्ति" + nl + "तीसरी पंक्ति";

+1

यह उत्तर पहले ही दिया जा चुका है। जब तक आप इसे बेहतर बनाने के लिए उस उत्तर में कुछ जोड़ने के लिए नहीं थे, तब तक इसे पोस्ट करने की आवश्यकता नहीं है। –

+0

हां पॉल, जवाब दिया गया था। यह करने का यह एक और तरीका है, – DanKuz