紧急求救:让VB中textbox文本框中的内容垂直居中!(很急的呀!)

leongwong 2004-11-03 07:32:43
请教各位老大:怎么让文本框中的内容垂直居中?
我现在做到的项目中,需要这样做!必须得这么做!
各位出招吧,或给点建议也行!
(这个问题以前在坛子里也出现过,但没有人回答!但我还是抱有一丝希望!)
...全文
6632 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
leongwong 2004-11-07
  • 打赏
  • 举报
回复
BlueBeer(1win) 的方法可以实现垂直居中,万分感谢!同时,也感谢楼上的各位!
xiaotanghl 2004-11-06
  • 打赏
  • 举报
回复
其实我觉得很简单,应该有好几种方法的:
1、用一个Label代替显示,单击时出来一个文本框就可以了。
2、数据保存起来,显示的是经过处理的数据,并不难;例如:值="232323",显示:=" 232323"
3、用一个类模块把文本框包装一下,可以用上面的原理。
BlueBeer 2004-11-06
  • 打赏
  • 举报
回复
试试看

'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
CatchWind 2004-11-05
  • 打赏
  • 举报
回复
我有一個自己寫的控件,要的話發Email給我.CatchWind@163.com
leongwong 2004-11-05
  • 打赏
  • 举报
回复
homezj(小吉)的思路很好,我也在试!等有了结果我会告诉大家的!
我就搞不懂,这个球textbox咋就没有垂直居中这个属性呢!
leongwong 2004-11-05
  • 打赏
  • 举报
回复
sinall()说的贴子,我已经看过了!用那个方法可以实现,可是不太明显!如果实在没有的话,也只有那么考虑了!
leongwong 2004-11-05
  • 打赏
  • 举报
回复
textbox内容不多的,只是输入阿拉伯数字!
楼上的这位赐教!
BlueBeer 2004-11-04
  • 打赏
  • 举报
回复
textbox的内容多不多?我倒收藏过一个使单行文本的textbox垂直居中的代码
sinall 2004-11-04
  • 打赏
  • 举报
回复
http://community.csdn.net/Expert/topic/3444/3444880.xml?temp=.6252863
homezj 2004-11-04
  • 打赏
  • 举报
回复
方法可能有很多,我提一个思路:

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

若没有等待录入文字的需求,根本就不需用TextBox
leongwong 2004-11-04
  • 打赏
  • 举报
回复
谢谢楼上的各位!我是在做一个控件时遇到这个问题的!财务软件中(如用友)凭证录入时的红色金额线!由于TextBox无法实现内容的垂直居中,严重影响美观!目前还在寻找方法!
a达哥a 2004-11-03
  • 打赏
  • 举报
回复
同意楼上! 说得好!
homezj 2004-11-03
  • 打赏
  • 举报
回复
TextBox没有垂直居中的功能,因为其中文本是按行垂直定位的,文本无法跨行显示。而且一般设定多行属性后,文本是可以上下滚动的,垂直居中就无从谈起了。
所以不知你是什么目的,若仅仅是为显示出来的东西有文本框效果,又想垂直居中美观一些的话,完全可用PictureBox代替。
starsoulxp 2004-11-03
  • 打赏
  • 举报
回复
居中用align属性试试

建议用richtextbox
starsoulxp 2004-11-03
  • 打赏
  • 举报
回复
垂直的可以用字体,有一系列字体是竖着的,没安vb,名字忘了

1,453

社区成员

发帖
与我相关
我的任务
社区描述
VB 控件
社区管理员
  • 控件
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧