2010-06-06 82 views

回答

2

你也可以創建在RTF編輯器(如寫字板)RTF文檔,保存文件,打開它作爲一個文本/純文本文件和RTF文檔複製到在設計時你RichTextBoxRtfText財產。

但我建議不要這樣做。這樣,你的代碼中就有大量的數據,這樣做沒有意義。畢竟,使用資源,這就是他們的目標。您可以綁定單個資源以在設計時控制屬性。

7

爲您的項目添加一個新類並粘貼下面顯示的代碼。編譯。將工具箱頂部的新控件放到表單上。選擇RichText屬性並點擊帶點的按鈕。這將啓動寫字板。編輯您的文本,鍵入Ctrl + S並關閉寫字板。請注意,當寫字板打開時,Visual Studio設計器不起作用。

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

非常酷的如何擴展Forms設計器/組件模型的示例。 – 2010-06-07 20:14:23

+0

Bravo!你節省了我的一天......它的可惜Visual Studio在設計時並沒有提供這種功能... +1爲你 – 2011-06-24 13:53:41

+0

優秀的解決方案,真正優秀。 – 2012-07-20 10:36:11

1

我發現在CodeProject這個環節是非常有用的:

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

它是圍繞具有良好的結構化的代碼標準的.NET RichtTextBox控制一個完全工作的RTF編輯控制的構建。它展示瞭如何使用控件的幾乎所有可用功能。

但是,它是用c#編寫的,而不是vb.net,但你應該定義一下。

0

布拉沃 - 簡單而高效!這裏也是小的更正,因爲參數是帶空格的長字符串,所以下一行包含所需的引號:

Process.Start("wordpad.exe", """" & fname & """").WaitForExit() 
相關問題