2008-09-25 13 views
5

मुझे क्लिपबोर्ड पर कुछ रिचटेक्स्ट बनाने और प्रतिलिपि बनाने की आवश्यकता है मानक "स्वरूपण" जैसे बोल्ड/इटालिक्स, इंडेंट्स और इसी तरह। जिस तरह से मैं अब यह कर रहा हूँ एक तरह से असजीला ... मैं एक RichTextBox आइटम बना रहा हूं और इतने की तरह है कि के माध्यम से अपने स्वरूपण लागू करने लगता है:सी # में RichText Manipulating का बेहतर तरीका?

RichTextBox rtb = new RichTextBox(); 
Font boldfont = new Font("Times New Roman", 10, FontStyle.Bold); 
rtb.Text = "sometext"; 
rtb.SelectAll() 
rtb.SelectionFont = boldfont; 
rtb.SelectionIndent = 12; 
वहाँ

एक बेहतर तरीका हो गया है, लेकिन एक के बाद खोज के कुछ घंटे मैं कुछ भी बेहतर के साथ आने में असमर्थ था। कोई विचार?

संपादित करें: रिचटेक्स्टबॉक्स (आरटीबी) किसी भी रूप में कहीं भी प्रदर्शित/खींचा नहीं गया है। मैं बस अपने RichText प्रारूपित करने के लिए वस्तु का उपयोग कर रहा हूँ।

उत्तर

3

अनावश्यक झिलमिलाहट से बचने के लिए आप उन सभी को करने से पहले समृद्ध टेक्स्टबॉक्स के लेआउट को निलंबित करना चाह सकते हैं। यही कारण है कि आम गलतियों मैं बनाने के लिए इस्तेमाल में से एक जो बना यह लगता "असजीला"

+1

वैसे यह बात है; RichTextBox भी * प्रदर्शित * कहीं भी नहीं है ... मैं बस इसका उपयोग कर रहा हूं क्योंकि मुझे RichText में हेरफेर/प्रारूपित करने के लिए एक समान रूप से स्पष्ट तरीका नहीं मिला। तुम्हारे सुझाव के लिए धन्यवाद। – BKimmel

+0

खैर, मुझे लगता है कि आप पूरी कक्षा संरचना और विधियों और सीधे समृद्ध पाठ में हेरफेर करने के लिए क्या नहीं बना सकते हैं, और फिर आप उस कोड को ऑनलाइन पोस्ट कर सकते हैं ताकि अन्य इसका उपयोग कर सकें। समृद्ध पाठ पुस्तकालयों के लिए एक Google खोज कुछ भी नहीं बदलती है? – hova

2

आप कुछ उपयोगिता विस्तार तरीकों बना सकते हैं इसे और अधिक 'सुरुचिपूर्ण' बनाने के लिए :)

public static RichTextBox Set(this RichTextBox rtb, Font font, string text) 
{    
    rtb.Text = text; 
    rtb.SelectAll(); 
    rtb.SelectionFont = font; 
    rtb.SelectionIndent = 12; 
    return rtb; 
} 

और इस तरह फोन है:

someRtb.Set(yourFont, "The Text").AndThenYouCanAddMoreAndCHainThem(); 

संपादित करें: अब मुझे लगता है कि आप इसे प्रदर्शित भी नहीं कर रहे हैं। एचआरएम, दिलचस्प, खेद है कि मैं एक गैर आरटीबी रास्ता प्रदान करने में बहुत मदद नहीं कर रहा था।

+0

यह अच्छा है लेकिन हो रहा है कि इसे होने पर पुनर्निर्मित करने के लिए @ होवा के सुझाव के साथ जोड़ा जाना चाहिए। –

3

मुझे लगता है कि आपकी तकनीक जो आप करना चाहते हैं उसे पूरा करने का एक शानदार तरीका है। मुझे पता है कि आपका क्या मतलब है ... यह "गंदी" तरह लगता है क्योंकि आप इसके अलावा किसी अन्य चीज़ के लिए विनफॉर्म नियंत्रण का उपयोग कर रहे हैं, लेकिन यह सिर्फ काम करता है। मैंने इस तकनीक का इस्तेमाल वर्षों से किया है। यह देखना दिलचस्प है कि किसी और के पास व्यवहार्य विकल्प हैं या नहीं।

+0

सहमत हुए। यह किसी पृष्ठ को पार्स करने और टेक्स्ट आउट या कुछ प्राप्त करने के लिए वेबब्रोसर नियंत्रण बनाने से अलग नहीं है, जो मैंने पहले किया है। नए उद्देश्यों के लिए उपकरणों का उपयोग करने में कुछ भी गलत नहीं है। –

+0

हां, यह वही है जो मैं कहने की कोशिश कर रहा हूं ... यह गलत लगता है ...यदि इसके बारे में जाने के लिए कोई समान रास्ता नहीं है तो मैं ठीक हूं ... मैं आरटीएफ मैन्युअल रूप से तारों को प्रारूपित करने की कोशिश करने के आसपास गड़बड़ से ऐसा करता हूं ... मैंने सोचा कि वहां कुछ ऐसा होना चाहिए जो मुझे याद आ रही है । – BKimmel

0

मैं जानता हूँ कि यह एक समय हो गया है, लेकिन एचटीएमएल के लिए rtf परिवर्तित करने पर इस stackoverflow पोस्ट की जाँच करें। यह आपकी सामग्री को HTML में प्राप्त करने, इसे कुशल बनाने के लिए आसान तरीका होगा, फिर या तो इसे HTML का उपयोग करके प्रदर्शित करें या इसे वापस आरटीएफ में परिवर्तित करें।

Convert Rtf to HTML

1

आप, साथ ही निर्माण के बाद richtextbox के लेआउट को निरस्त करने और उपयोग के बाद यह निपटाने चाहिए।

RichTextBox rtb = new RichTextBox(); 
rtb.SuspendLayout(); 
//richtext processing goes here... 
rtb.Dispose(); 

और Richtext प्रसंस्करण के लिए richtextbox का उपयोग करने के लिए शर्मिंदा मत बनें। माइक्रोसॉफ्ट खुद इसे this ट्यूटोरियल में कर रहा है। :-)

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