怎么得到文本框中文字的宽度值 是多少?

解决方案 »

  1.   

    简单,在你把文本输入进text的同时,请把一个label的caption去等于text的内容,设置label自动适应大小,然后看label的宽度是多少就得到了Private Sub Command1_Click()
      Me.Label1.Caption = me.text1.text
      Me.Label1.AutoSize = True
      Debug.Print Me.Label1.width
    End Sub
      

  2.   

    '以下6行为字符宽度计算用,放在模块中.Type Size     
        cx As Long
        cy As Long
    End Type
    Declare Function GetDC Lib "user32" (ByVal hWnd As Long) As Long
    Declare Function GetTextExtentPoint32 Lib "gdi32" Alias "GetTextExtentPoint32A" (ByVal hdc As Long, ByVal lpsz As String, ByVal cbString As Long, lpSize As Size) As Long
        '以下所求字符宽度的步骤:
        Dim hdc5 As Long
        Dim sz As Size
      
      SS = Me.文本1.Text
        N = Len(SS)
        
        hdc5 = GetDC(Screen.ActiveForm.hWnd)
        Call GetTextExtentPoint32(hdc5, SS, N, sz) '取得该字元的长、宽
        所求宽度 = sz.cx
      

  3.   

    //简单,在你把文本输入进text的同时,请把一个label的caption去等于text的内容,设置label自动适应大小,然后看label的宽度是多少就得到了老莫的办法大有问题——没考虑字体的差异!
      

  4.   

    dim a as long
    dim b as long
    a=text1.textwidth(text1.text)      
    b=text1.textheight(text1.text)
      

  5.   

    //请楼上的举个例子,我看看你所谓的字体差异是什么个东西俺不信text1的宋体9号会和Label1的黑体20号一样宽!
      

  6.   

    楼主只是问了:怎么得到文本框中文字的宽度值 是多少?
    谁保证Text和Label这两个控件用的是同样的字体?合理的做法应该先把Label的字体及宽度设置成和Text一样!
    至于用完后是否恢复原来字体大小看情况吧
    (其实更安全的做法还要考虑它们所属容器的ScaleMode是否一致。
    因为:F1帮助里写明了TextWidth的注意要点
    字符串宽度是以对 object 有效的 ScaleMode 属性设置或通过 Scale 方法的坐标系统来表示的。)不知俺说的对不对?
      

  7.   

    如果要用(Me.)TextWidth函数来求,先要将FORM和字体属性设置成和TEXT一样才能得到正确结果。