注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

张思思廊坊师范学院信息技术提高班 十一期

改变需要不断去做。。。

 
 
 

日志

 
 

如何让TextBox中文字垂直居中?  

2014-01-12 19:02:25|  分类: 技术技能 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
敲百例的时候,只是照着所给的代码敲,自己有很多细节问题没有注意到,知道看课本是才发现还有很多问题,比如如何让TextBox中的文字居中?
查阅书籍直说直接修改属性栏的Alignment属性值改为2-Center。这样使得文字左右居中,但仍不能使得文字垂直居中。TextBox没有垂直居中的功能,文本是按行垂直定位的,文本无法跨越显示。设置Multiline值为true,文本将出现上下滚动条,就无从谈起垂直居中了。
我认为当知道输入的文字 时,可以设置与之相符的textbox框架让文字正好垂直居中,但当不知道时我仍无法让文字垂直居中,我从网上搜到一段代码,可以实现文字的垂直居中,但以我现在的能力还不能看懂代码。
'TextBox的MultiLine必须设为True

Private 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 = &HB4

Sub 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 Sub

Private Sub Form_Load()
    VerMiddleText Text1
End Sub









  评论这张
 
阅读(26)| 评论(13)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017