Можно ли стилизовать текст в richtextbox во время разработки? - PullRequest
7 голосов
/ 06 июня 2010

У меня есть System.Windows.Forms.RichTextBox, который я хочу использовать для отображения некоторых инструкций для пользователей моего приложения.

Можно ли сделать текст, который я ввожу во время разработки, жирным?

Или у меня нет другого выбора, кроме как сделать это во время выполнения?

Ответы [ 4 ]

9 голосов
/ 06 июня 2010

Добавьте новый класс в ваш проект и вставьте код, показанный ниже. Компиляция. Перетащите новый элемент управления из верхней части ящика для инструментов на форму. Выберите свойство RichText и нажмите кнопку с точками. Это запустит Wordpad. Отредактируйте текст, нажмите Ctrl + S и закройте Wordpad. Помните, что дизайнер Visual Studio не работает, когда Wordpad открыт.

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 голосов
/ 06 июня 2010

Вы, безусловно, можете создать RTF-документ в RTF-редакторе (например, WordPad), сохранить файл, открыть его как текстовый / обычный файл и скопировать RTF-документ в свойство RtfText вашего RichTextBox во время разработки.

Но я советую против этого. Таким образом, в вашем коде есть большой объем данных, и в этом нет никакого смысла. В конце концов, используйте ресурс, для которого они и существуют. Вы можете связать отдельные ресурсы для управления свойствами во время разработки.

1 голос
/ 07 июня 2010

Я нашел эту ссылку на codeproject очень полезной:

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

Это полностью работающий элемент управления rtf-редактирования, основанный на стандартном элементе управления .net RichtTextBox с хорошим структурированным кодом. Он показывает, как использовать практически все доступные функции элемента управления.

Тем не менее, он написан на c #, а не на vb.net, но вы обязательно должны взглянуть.

0 голосов
/ 22 июня 2015

Bravo - просто и эффективно! Здесь также есть небольшое исправление, потому что аргумент - это длинная строка с пробелами, поэтому следующая строка содержит обязательные кавычки:

Process.Start("wordpad.exe", """" & fname & """").WaitForExit() 
...