根据文本动态重新调整富文本框的大小?

时间:2014-05-15 17:01:01

标签: dynamic vb6 resize richtextbox

如果我想要在vb6中重新调整richtextbox的大小,使其宽度始终等于其文本的长度,我将如何去做?我不知道有任何方法可以测量richtextbox控件中文本字符串的正确长度。在某些时候,我在textwidth属性

方面取得了相对成功
Private Sub Form_Resize()

RTBarcode.Height = Barcode.Height - 1700

RTBarcode.Width = TextWidth(RTBarcode.Text)

End Sub

但它太不可靠了,我不知道它在测量什么。任何帮助将不胜感激!

3 个答案:

答案 0 :(得分:1)

我确实使用此代码找出了它

Private Sub Form_Resize()
Dim char As Long

char = Len(RTBarcode.Text)
RTBarcode.Width = char * 550


RTBarcode.Height = Barcode.Height - 1700


End Sub

你可以把它放在你需要它的任何地方,我可以在resize子和按钮点击子。

答案 1 :(得分:1)

在RichTextBox的_Change()事件中,使用TextWidth()函数。

With RichTextBox
    .Width = IIf(0 = Len(.Text), TextWidth("W"), TextWidth(.Text))
End With

我现在没有VB6可用但是给它一个镜头,它可能需要一些改变。但是如果它是空的你肯定不希望Width = 0或者它们不能输入任何东西,所以默认是1个字符宽度("W")。

答案 2 :(得分:1)

您可以将表单的字体设置为richtextbox的字体,然后测量文本在表单上显示的宽度

请确保您不在代码中的任何其他位置打印表单上的任何内容,因为此代码也会更改其中的字体

查看以下测试项目:

'1 form with :
'  1 richtextbox control: name=RichTextBox1
'  2 command buttons : name=Command1     name=Command2
Option Explicit

Private Sub Command1_Click()
  Dim lngWidth As Long
  With RichTextBox1
    Font.Name = .Font.Name
    Font.Size = .Font.Size
    lngWidth = TextWidth(.Text)
  End With
  Caption = CStr(lngWidth)
End Sub

Private Sub Command2_Click()
  With RichTextBox1
    .Font.Size = 2 * .Font.Size

  End With 'RichTextBox1
End Sub

Private Sub Command3_Click()
  With RichTextBox1
    .SelFontSize = 2 * .Font.Size
  End With 'RichTextBox1
End Sub

在rtb中输入一些文本并单击Command1(默认文本应在表单的标题中给出值1005

然后单击Command2,它将使字体大小加倍并再次单击Command1(默认文本将在表单的标题中给出值2010

然后在rtb中选择文本的一部分,然后单击Command3,它将使选择的字体大小加倍,然后再次单击Command1,看到表单标题中的值不会改变

如果您不允许在rtb中使用不同的字体,那么上面的代码可能会起作用,它甚至会为您选择最长的行并测量该行的宽度