1

リッチテキスト ボックス コントロールにテキストを追加するときに、一部のテキストを太字にする必要があります。現在、ここに私のコードがあります

編集

With txtDetails
        If Not IsNullOrEmpty(title) Then
        Dim intStart As Integer
        intStart = Len(.Text)
            .Text = .Text & title '& vbCrLf
            .SelStart = intStart
            .SelLength = Len(title)
            .SelBold = True
            .SelLength = 0
            .SelBold = False
            .Text = .Text & vbNewLine
        End If
        If Not IsNullOrEmpty(value) Then
            .Text = .Text & value & vbNewLine
        End If
        .Text = .Text & vbNewLine
    End With

誰でも修正を手伝ってもらえますか

私はコードに変更を加えましたが、興味のあるものに加えて、追加するすべての後続のテストを太字にします

4

3 に答える 3

2

設定.Textには、コードが意図したとおりに実行できないという副作用があります。

  1. リセットされるため、最初.SelStartの長さを保存する必要があります。.Text
  2. すべての書式設定がリセットされるため、太字が失われます。
于 2012-10-03T21:20:42.003 に答える
2

title「欠落」していない場合は太字を追加し、 「欠落」していない場合は太字を追加したいようですvalue

Option Explicit

Private Function IsNullOrEmpty(ByVal Item As Variant) As Boolean
    If IsNull(Item) Then
        IsNullOrEmpty = True
    ElseIf IsEmpty(Item) Then
        IsNullOrEmpty = True
    ElseIf VarType(Item) = vbString Then
        If Len(Item) = 0 Then
            IsNullOrEmpty = True
        End If
    End If
End Function

Private Sub cmdAppend_Click()
    With rtbDisplay
        .SelStart = &H7FFFFFFF
        If Not IsNullOrEmpty(txtTitle.Text) Then
            .SelBold = True
            .SelText = txtTitle.Text
            txtTitle.Text = ""
            .SelBold = False
            .SelText = vbNewLine
        End If
        If Not IsNullOrEmpty(txtValue.Text) Then
            .SelText = txtValue.Text
            txtValue.Text = ""
            .SelText = vbNewLine
        End If
    End With
    txtTitle.SetFocus
End Sub

ここでは TextBox コントロールをデータ ソースとして使用していますが、一般的な考え方は理解できるはずです。多くの場合、文字列連結を使用して改行を追加するよりも、2 つの操作を使用する方が安価です。

現在の .Text を取得して Len() で測定するのも、内容が大きい場合はコストがかかるため、 .SelStart を最大値に設定するだけで最後まで移動できます。

于 2012-10-03T21:40:20.117 に答える
-1

私は vb には興味がありませんが、プロジェクトを作成してテストしました。
これを試して

    With txtDetails
        .SelectionStart = 0
        .SelectionLength = txtDetails.TextLength
        .SelectionFont = New Font(txtDetails.Font, FontStyle.Bold)
    End With
于 2012-10-03T21:27:24.287 に答える