如果我想要在vb6中重新调整richtextbox
的大小,使其宽度始终等于其文本的长度,我将如何去做?我不知道有任何方法可以测量richtextbox
控件中文本字符串的正确长度。在某些时候,我在textwidth
属性
Private Sub Form_Resize()
RTBarcode.Height = Barcode.Height - 1700
RTBarcode.Width = TextWidth(RTBarcode.Text)
End Sub
但它太不可靠了,我不知道它在测量什么。任何帮助将不胜感激!
答案 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中使用不同的字体,那么上面的代码可能会起作用,它甚至会为您选择最长的行并测量该行的宽度