7

アプリケーションユーザーにいくつかの指示を表示するために使用したいSystem.Windows.Forms.RichTextBoxがあります。

デザイン時に入力するテキストの一部を太字に設定することはできますか?

または、実行時に実行する以外に選択肢はありませんか?

4

4 に答える 4

10

プロジェクトに新しいクラスを追加し、以下に示すコードを貼り付けます。コンパイル。ツール ボックスの上部から新しいコントロールをフォームにドロップします。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
于 2010-06-06T19:56:23.023 に答える
4

RTF エディター (ワードパッドなど) で RTF ドキュメントを作成し、ファイルを保存して、テキスト/プレーン ファイルとして開き、設計時に RTF ドキュメントを のRtfTextプロパティにコピーすることができます。RichTextBox

しかし、私はそれに反対することをお勧めします。そうすれば、コードに大量のデータがあり、それを行う意味がありません。結局のところ、リソースを使用してください。それが彼らの目的です。個々のリソースをバインドして、設計時にプロパティを制御できます。

于 2010-06-06T16:17:53.297 に答える
1

codeprojectのこのリンクは非常に便利であることがわかりました:

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

これは、優れた構造化コードを備えた標準の.netRichtTextBoxコントロールを中心に構築された完全に機能するrtf編集コントロールです。コントロールのほぼすべての利用可能な機能を使用する方法を示しています。

ただし、vb.netではなくc#で記述されていますが、必ず確認する必要があります。

于 2010-06-06T20:26:11.480 に答える