我有一個System.Windows.Forms.RichTextBox,我希望用它來向我的應用程序用戶顯示一些指令。在設計時可以在richtextbox中設置文本樣式嗎?
是否可以將我在設計時輸入的一些文字設置爲粗體?
或者我沒有選擇,只能在運行時做到這一點?
我有一個System.Windows.Forms.RichTextBox,我希望用它來向我的應用程序用戶顯示一些指令。在設計時可以在richtextbox中設置文本樣式嗎?
是否可以將我在設計時輸入的一些文字設置爲粗體?
或者我沒有選擇,只能在運行時做到這一點?
你也可以創建在RTF編輯器(如寫字板)RTF文檔,保存文件,打開它作爲一個文本/純文本文件和RTF文檔複製到在設計時你RichTextBox
的RtfText
財產。
但我建議不要這樣做。這樣,你的代碼中就有大量的數據,這樣做沒有意義。畢竟,使用資源,這就是他們的目標。您可以綁定單個資源以在設計時控制屬性。
爲您的項目添加一個新類並粘貼下面顯示的代碼。編譯。將工具箱頂部的新控件放到表單上。選擇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
我發現在CodeProject這個環節是非常有用的:
http://www.codeproject.com/KB/miscctrl/richtextboxextended.aspx
它是圍繞具有良好的結構化的代碼標準的.NET RichtTextBox控制一個完全工作的RTF編輯控制的構建。它展示瞭如何使用控件的幾乎所有可用功能。
但是,它是用c#編寫的,而不是vb.net,但你應該定義一下。
布拉沃 - 簡單而高效!這裏也是小的更正,因爲參數是帶空格的長字符串,所以下一行包含所需的引號:
Process.Start("wordpad.exe", """" & fname & """").WaitForExit()
非常酷的如何擴展Forms設計器/組件模型的示例。 – 2010-06-07 20:14:23
Bravo!你節省了我的一天......它的可惜Visual Studio在設計時並沒有提供這種功能... +1爲你 – 2011-06-24 13:53:41
優秀的解決方案,真正優秀。 – 2012-07-20 10:36:11