2009-02-19 13 views
15

के साथ संपादक बनाने के लिए मैं डोमेन विशिष्ट भाषा के लिए एक टेक्स्ट एडिटर बना रहा हूं। मैं मूल नियंत्रण के रूप में WPF RichTextBox का उपयोग कर रहा हूं। मुझे नहीं पता कि लाइन नंबरिंग को गहन तरीके से कैसे शामिल किया जाए। क्या किसी को किसी भी उदाहरण के बारे में पता है?WPF RichTextBox लाइन नंबर

+0

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

उत्तर

3

मैं एक स्टैक पैनल नियंत्रण और बाईं ओर टेक्स्ट ब्लॉक के साथ एक समग्र नियंत्रण बनाएगा जिसका उपयोग आप लाइन नंबरिंग को संभालने के लिए करेंगे। यदि आप लाइनों की संख्या से चिंतित हैं और बहुत से दृश्य तत्व हैं, तो आप वर्चुअल मोड में लिस्टबॉक्स का उपयोग कर सकते हैं।

आपको रिचटेक्स्टबॉक्स पर विभिन्न घटनाओं को अपनाना होगा ताकि आप जानते हैं कि सूची बॉक्स को कब अपडेट करना है, साथ ही प्रत्येक पंक्ति की ऊंचाई की गणना करना है, लेकिन यह RichTextBox से जुड़े फ़्लो डॉक्यूमेंट के साथ करने योग्य होना चाहिए।

+0

मुझे यकीन नहीं है कि मुझे यह विचार पसंद है - रिचएडिट बेसलाइन के साथ सूची बॉक्स टेक्स्ट बेसलाइन इनलाइन को रखना समस्याग्रस्त हो सकता है (निश्चित रूप से यदि उसका कोड फ़ॉर्मेटर अलग-अलग फ़ॉन्ट्स की अनुमति देता है) - लेकिन चूंकि मेरे पास कोई विकल्प नहीं है, +1 –

+0

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

3

रिचटेक्स्ट "संरक्षित" - uneditable - spans का समर्थन करता है। आप आरटीएफ स्ट्रीम (जब आप अपना स्वरूपण करते हैं) के हिस्से के रूप में सुरक्षित लाइन स्पैन के रूप में अपनी लाइन संख्याओं को डंप कर सकते हैं।

विन फॉर्म में, आप RichTextBox.SelectionProtected Property का उपयोग कर सकते हैं। डब्ल्यूपीएफ में कुछ समान होना चाहिए।

इस तरह, आपकी सभी बेसलाइन सही होंगी और आपको संपादक को सही तरीके से व्यवहार करने के लिए कोई अतिरिक्त सोच/प्रोग्रामिंग करने की आवश्यकता नहीं होगी। संपादन योग्य पाठ संपादन योग्य होगा, और रेखा संख्या नहीं होगी।

केवल नीचे की ओर यह है कि आपको प्रत्येक संपादन के बाद आरटीएफ स्ट्रीम को पुनः सबमिट करना होगा। लेकिन मुझे लगता है कि आप पहले से ही पार्स स्वरूपण/त्रुटि निदान/जो कुछ भी प्रदान करने के लिए ऐसा कर रहे थे।

2

AqiStar के समृद्ध टेक्स्ट WPF नियंत्रण का उपयोग करने के बारे में कैसे? AqiStar.TextBox

मैं उनके लिए काम नहीं है ... मैं सिर्फ इतना पता है कि Oren उसकी NHibernate प्रोफाइलर (NHProf) में इस उत्पाद का उपयोग किया जाता है और वह यह खुदाई करने के लिए लगता है।

+0

दुर्भाग्यवश, मेरा नियोक्ता हमें ऐसे सॉफ़्टवेयर को शामिल नहीं करने देगा जो हमें हमारे समाधान में लाइसेंस देना है। –

7

AvalonEdit एक अच्छा है, और यह खुला स्रोत है। मुझे लगता है कि इसमें एसिस्टर नियंत्रण की लगभग सभी विशेषताएं हैं जैसे सिंटैक्स हाइलाइटिंग और फोल्डिंग। कॉन्फ़िगर करने और उपयोग करने में आसानी। अधिक जानकारी here मिल सकती है। enter image description here

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