请教各位老大:怎么让文本框中的内容垂直居中?
我现在做到的项目中,需要这样做!必须得这么做!
各位出招吧,或给点建议也行!
(这个问题以前在坛子里也出现过,但没有人回答!但我还是抱有一丝希望!)

解决方案 »

  1.   

    居中用align属性试试建议用richtextbox
      

  2.   

    TextBox没有垂直居中的功能,因为其中文本是按行垂直定位的,文本无法跨行显示。而且一般设定多行属性后,文本是可以上下滚动的,垂直居中就无从谈起了。
    所以不知你是什么目的,若仅仅是为显示出来的东西有文本框效果,又想垂直居中美观一些的话,完全可用PictureBox代替。
      

  3.   

    谢谢楼上的各位!我是在做一个控件时遇到这个问题的!财务软件中(如用友)凭证录入时的红色金额线!由于TextBox无法实现内容的垂直居中,严重影响美观!目前还在寻找方法!
      

  4.   

    方法可能有很多,我提一个思路:如果你的垂直居中TextBox,需要有等待录入文字的作用,那可把一个单行TextBox放入一个容器中(Frame或PictureBox都行),让TextBox在容器中垂直居中,把容器做成你需要的文本框模样,若还想让TextBox不露痕迹与容器溶为一体,可把它边框去掉,背景色与容器设成一样。想再完善一点,编程使容器获得焦点时,自动把光标移至TextBox上若没有等待录入文字的需求,根本就不需用TextBox
      

  5.   

    http://community.csdn.net/Expert/topic/3444/3444880.xml?temp=.6252863
      

  6.   

    textbox的内容多不多?我倒收藏过一个使单行文本的textbox垂直居中的代码
      

  7.   

    textbox内容不多的,只是输入阿拉伯数字!
    楼上的这位赐教!
      

  8.   

    sinall()说的贴子,我已经看过了!用那个方法可以实现,可是不太明显!如果实在没有的话,也只有那么考虑了!
      

  9.   

    homezj(小吉)的思路很好,我也在试!等有了结果我会告诉大家的!
    我就搞不懂,这个球textbox咋就没有垂直居中这个属性呢!
      

  10.   

    我有一個自己寫的控件,要的話發Email給我[email protected]
      

  11.   

    试试看'TextBox的MultiLine必须设为TruePrivate Type RECT
        Left As Long
        Top As Long
        Right As Long
        Bottom As Long
    End Type
    Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" ( _
        ByVal hwnd As Long, _
        ByVal wMsg As Long, _
        ByVal wParam As Long, _
        lParam As Any) As Long
    Private Const EM_GETRECT = &HB2
    Private Const EM_SETRECTNP = &HB4Sub VerMiddleText(mText As TextBox)
        If mText.MultiLine = False Then Exit Sub
        Dim rc As RECT, tmpTop As Long, tmpBot As Long
        SendMessage mText.hwnd, EM_GETRECT, 0, rc
        With Me.Font
          .Name = mText.Font.Name
          .Size = mText.Font.Size
          .Bold = mText.Font.Bold
        End With
        tmpTop = ((rc.Bottom - rc.Top) - _
            (mText.Parent.TextHeight("H") \ Screen.TwipsPerPixelY)) \ 2 + 2
        tmpBot = ((rc.Bottom - rc.Top) + _
            (mText.Parent.TextHeight("H") \ Screen.TwipsPerPixelY)) \ 2 + 2
        rc.Top = tmpTop
        rc.Bottom = tmpBot
        mText.Alignment = vbCenter
        SendMessage mText.hwnd, EM_SETRECTNP, 0&, rc
        mText.Refresh
    End SubPrivate Sub Form_Load()
        VerMiddleText Text1
    End Sub
      

  12.   

    其实我觉得很简单,应该有好几种方法的:
    1、用一个Label代替显示,单击时出来一个文本框就可以了。
    2、数据保存起来,显示的是经过处理的数据,并不难;例如:值="232323",显示:="   232323"
    3、用一个类模块把文本框包装一下,可以用上面的原理。
      

  13.   

    BlueBeer(1win) 的方法可以实现垂直居中,万分感谢!同时,也感谢楼上的各位!