2010-06-06 6 views
6

मेरे पास एक सिस्टम है। Windows.Forms.RichTextBox जिसे मैं अपने एप्लिकेशन उपयोगकर्ताओं को कुछ निर्देश प्रदर्शित करने के लिए उपयोग करना चाहता हूं।क्या डिज़ाइन समय पर एक richtextbox में टेक्स्ट स्टाइल करना संभव है?

क्या डिज़ाइनटाइम पर दर्ज किए गए कुछ पाठ को बोल्ड होने के लिए सेट करना संभव है?

या मेरे पास रनटाइम पर ऐसा करने के अलावा कोई विकल्प नहीं है?

उत्तर

2

आप निश्चित रूप से आरटीएफ संपादक (जैसे वर्डपैड) में एक आरटीएफ दस्तावेज़ बना सकते हैं, फ़ाइल को सहेज सकते हैं, इसे एक टेक्स्ट/सादा फ़ाइल के रूप में खोल सकते हैं और आरटीएफ दस्तावेज़ को में RichTextBox की डिज़ाइन समय पर कॉपी कर सकते हैं।

लेकिन मैं इसके खिलाफ सलाह देता हूं। इस तरह, आपके पास अपने कोड में बड़ी मात्रा में डेटा है और ऐसा करने में कोई बात नहीं है। एक संसाधन का प्रयोग करें, यही वह सब कुछ है, आखिरकार। आप डिजाइन समय पर गुणों को नियंत्रित करने के लिए व्यक्तिगत संसाधनों को बांध सकते हैं।

7

अपनी परियोजना में एक नई कक्षा जोड़ें और नीचे दिखाए गए कोड को पेस्ट करें। संकलित करें। टूल बॉक्स के शीर्ष से अपने फॉर्म पर नया नियंत्रण ड्रॉप करें। RichText प्रॉपर्टी का चयन करें और डॉट्स के साथ बटन पर क्लिक करें। वह वर्डपैड शुरू करेगा। अपना टेक्स्ट संपादित करें, Ctrl + S टाइप करें और वर्डपैड बंद करें। सावधान रहें कि विजुअल स्टूडियो डिजाइनर गैर-कार्यात्मक है जबकि वर्डपैड खुला है।

Imports System.ComponentModel 
Imports System.Drawing.Design 
Imports System.IO 
Imports System.Diagnostics 

Public Class MyRtb 
    Inherits RichTextBox 

    <Editor(GetType(RtfEditor), GetType(UITypeEditor))> _ 
    Public Property RichText() As String 
     Get 
      Return MyBase.Rtf 
     End Get 
     Set(ByVal value As String) 
      MyBase.Rtf = value 
     End Set 
    End Property 

End Class 

Friend Class RtfEditor 
    Inherits UITypeEditor 

    Public Overrides Function GetEditStyle(ByVal context As ITypeDescriptorContext) As UITypeEditorEditStyle 
     Return UITypeEditorEditStyle.Modal 
    End Function 

    Public Overrides Function EditValue(ByVal context As ITypeDescriptorContext, ByVal provider As IServiceProvider, ByVal value As Object) As Object 
     Dim fname As String = Path.Combine(Path.GetTempPath, "text.rtf") 
     File.WriteAllText(fname, CStr(value)) 
     Process.Start("wordpad.exe", fname).WaitForExit() 
     value = File.ReadAllText(fname) 
     File.Delete(fname) 
     Return value 
    End Function 
End Class 
+0

फॉर्म डिज़ाइनर/घटक मॉडल को विस्तारित करने का बहुत अच्छा उदाहरण। –

+0

ब्रावो! आपने मेरा दिन बचाया ... इसकी करुणा विजुअल स्टूडियो डिज़ाइनटाइम पर उस कार्यक्षमता की पेशकश नहीं करती है ... आपके लिए +1 –

+0

उत्कृष्ट समाधान, वास्तव में उत्कृष्ट। –

1

मैं बहुत उपयोगी हो करने के लिए codeproject पर इस लिंक मिल गया:

http://www.codeproject.com/KB/miscctrl/richtextboxextended.aspx

यह एक अच्छा संरचित कोड के साथ मानक .net RichtTextBox नियंत्रण के चारों ओर एक पूरी तरह से काम कर रहे rtf संपादन नियंत्रण का निर्माण है। यह दिखाता है कि नियंत्रण की लगभग हर उपलब्ध सुविधा का उपयोग कैसे करें।

हालांकि, यह C# में लिखा गया है और vb.net नहीं है लेकिन आपको निश्चित रूप से एक नज़र रखना चाहिए।

0

ब्रावो - सरल और कुशल! यहां भी छोटा सुधार है, क्योंकि तर्क रिक्त स्थान के साथ लंबी स्ट्रिंग है इसलिए अगली पंक्ति में आवश्यक उद्धरण शामिल हैं:

Process.Start("wordpad.exe", """" & fname & """").WaitForExit() 
संबंधित मुद्दे