代码之家  ›  专栏  ›  技术社区  ›  Martin

是否可以在设计时在richtextbox中设置文本样式?

  •  6
  • Martin  · 技术社区  · 16 年前

    是否可以将我在设计时输入的某些文本设置为粗体?

    或者我除了在运行时做之外别无选择?

    4 回复  |  直到 16 年前
        1
  •  4
  •   Konrad Rudolph    16 年前

    您当然可以在RTF编辑器(例如写字板)中创建RTF文档,保存文件,将其作为文本/普通文件打开,然后将RTF文档复制到 RtfText RichTextBox 在设计时。

    但我建议不要这样做。这样,代码中就有大量的数据,这样做毫无意义。使用一个资源,这就是他们在那里,毕竟。可以在设计时将各个资源绑定到控件属性。

        2
  •  10
  •   Hans Passant    16 年前

    向项目中添加一个新类并粘贴如下所示的代码。编译。将新控件从工具箱顶部拖放到窗体上。选择RichText属性并单击带有点的按钮。这将启动写字板。编辑文本,键入Ctrl+S并关闭写字板。请注意,当写字板打开时,VisualStudio设计器不起作用。

    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
    
        3
  •  1
  •   Jürgen Steinblock    16 年前

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

    它是一个完全工作的rtf编辑控件,围绕标准的.net RichtTextBox控件构建,具有良好的结构化代码。它展示了如何使用控件的几乎所有可用功能。

    不过,它是用c语言编写的,不是vb.net,但您应该仔细看看。

        4
  •  0
  •   kleopatra Aji kattacherry    11 年前

    太棒了-简单高效!这里还有一个小的修正,因为参数是带空格的长字符串,所以下一行包含必需的引号:

    Process.Start("wordpad.exe", """" & fname & """").WaitForExit() 
    
    推荐文章