我有一个System.Windows.Forms.RichTextBox,我希望用它向我的应用程序用户显示一些指令。
是否可以将我在设计时输入的部分文本设置为粗体?
或者我没有选择,只能在运行时这样做?
答案 0 :(得分:9)
在项目中添加一个新类并粘贴下面显示的代码。编译。将新控件从工具箱顶部拖放到表单上。选择RichText属性,然后单击带有点的按钮。这将启动Wordpad。编辑文本,键入Ctrl + S并关闭Wordpad。请注意,当Wordpad处于打开状态时,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
答案 1 :(得分:3)
您当然可以在RTF编辑器(例如写字板)中创建RTF文档,保存文件,将其作为text / plain文件打开,并将RTF文档复制到RtfText
的{{1}}属性中在设计时。
但我建议不要这样做。这样,您的代码中就会有大量数据,这样做就没有意义了。毕竟,使用资源,这就是他们所拥有的资源。您可以在设计时绑定各个资源来控制属性。
答案 2 :(得分:1)
我发现codeproject上的这个链接非常有用:
http://www.codeproject.com/KB/miscctrl/richtextboxextended.aspx
这是一个完全工作的rtf编辑控件,围绕标准.net RichtTextBox控件构建,具有良好的结构化代码。它显示了如何使用控件的几乎所有可用功能。
但是,它是用c#而不是vb.net编写的,但你应该明确地看一下。
答案 3 :(得分:0)
Bravo - 简单高效!这里也是小修正,因为参数是带有空格的长字符串,所以下一行包含必需的引号:
Process.Start("wordpad.exe", """" & fname & """").WaitForExit()