2012-10-03 88 views
1

我需要大膽一些文字,我將它們添加到RichTextBox控件,目前這裏是我的代碼選擇和格式化文本

編輯

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 

誰能幫我我已經修改了代碼,但仍是修復

得到所有的後續測試我添加要大膽,insted的興趣

回答

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控件作爲數據源,但它應該給你一個總體思路。使用兩個操作比使用字符串連接添加換行符要便宜得多。

擷取電流。文本,並用LEN()測定它也是昂貴的,如果內容是大的,所以只需設置.SelStart爲最大值移動到端。

+0

文本追加到RTB控制使文本失去其格式 – Smith

+0

我想我不知道什麼是「格式」你指的是。上面的代碼就像你所問的一樣,盡我所能。我沒有看到任何「格式丟失」。 – Bob77

2
一上午

設置.Text有一定的副作用,能防止你的代碼做你想要什麼:

  1. 它重置.SelStart所以你需要保存的.Text第一長度。
  2. 它重置所有的格式,所以膽量就會丟失。
+0

請我編輯的代碼 – Smith

-1

我沒有進入vb,但我創建了一個項目並進行了測試。
試試這個

With txtDetails 
     .SelectionStart = 0 
     .SelectionLength = txtDetails.TextLength 
     .SelectionFont = New Font(txtDetails.Font, FontStyle.Bold) 
    End With 
+0

我問了一個VB6的問題,而不是VB.NET – Smith