服务器之家:专注于服务器技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|Java教程|ASP教程|编程技术|正则表达式|C/C++|IOS|C#|Swift|Android|VB|R语言|JavaScript|易语言|vb.net|

服务器之家 - 编程语言 - VB - VB的TextBox文本框实现垂直居中显示的方法

VB的TextBox文本框实现垂直居中显示的方法

2021-10-11 15:38VB教程网 VB

这篇文章主要介绍了VB的TextBox文本框实现垂直居中显示的方法,比较实用的功能,需要的朋友可以参考下

本文实例代码可以实现让VB的TextBox文本框垂直居中显示效果。此处需要注意:Form_Load()窗体代码中的多行属性设置必须为真,即Text1.MultiLine = True,该属性为只读属性,请在设计时修改,换行会被之后的代码屏蔽,不想屏蔽可自行修改,调用此函数就好了。

具体的功能代码如下:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
'================================================================================
'| 模 块 名 | TextBoxMiddle
'| 说  明 | 文本框居中显示
'=================================================================================
Option Explicit
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 Declare Function SetWindowText Lib "user32" Alias "SetWindowTextA" (ByVal hwnd As Long, ByVal lpString As String) As Long
Private Declare Function CallWindowProc Lib "user32" Alias "CallWindowProcA" (ByVal lpPrevWndFunc As Long, ByVal hwnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Private Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long
Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Private Const EM_GETRECT = &HB2
Private Const EM_SETRECTNP = &HB4
Private Const GWL_WNDPROC = (-4)
Private Const WM_CHAR = &H102
Private Const WM_PASTE As Long = &H302
Private prevWndProc   As Long
Public ClipText As String
Public Sub DisableAbility(TargetTextBox As TextBox)
  prevWndProc = GetWindowLong(TargetTextBox.hwnd, GWL_WNDPROC)
  SetWindowLong TargetTextBox.hwnd, GWL_WNDPROC, AddressOf WndProc
End Sub
 
Private Function WndProc(ByVal hwnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
  Dim Temp As String
  Select Case Msg
  Case WM_CHAR
    If wParam <> 13 Then WndProc = CallWindowProc(prevWndProc, hwnd, Msg, wParam, lParam)
  Case WM_PASTE
    ClipText = Clipboard.GetText
    Temp = Replace(ClipText, Chr(10), "")
    Temp = Replace(Temp, Chr(13), "")
    Clipboard.Clear
    Clipboard.SetText Temp
    WndProc = CallWindowProc(prevWndProc, hwnd, Msg, wParam, lParam)
    Clipboard.Clear
    Clipboard.SetText ClipText
  Case Else
    WndProc = CallWindowProc(prevWndProc, hwnd, Msg, wParam, lParam)
  End Select
End Function
Sub VerMiddleText(mForm As form, 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 mForm.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
  DisableAbility mText
End Sub
'///////////////////////////////////////////////////////
'以下为窗体代码
'///////////////////////////////////////////////////////
Private Sub Form_Load()
  '================注意!!!=================
  '多行属性必须为真,暨Text1.MultiLine = True
  '该属性为只读属性,请在设计时修改
  '换行会被之后的代码屏蔽,不想屏蔽可自行修改
  '===========================================
  '调用此函数就好了
  VerMiddleText Me, Text1
  Caption = Len(Text1)
End Sub

延伸 · 阅读

精彩推荐
  • VBVB实现的16位和32位md5加密代码分享

    VB实现的16位和32位md5加密代码分享

    这篇文章主要介绍了VB实现的16位和32位md5加密代码分享,需要的朋友可以参考下...

    VB.NET教程网8592021-10-08
  • VBVB的TextBox文本框实现垂直居中显示的方法

    VB的TextBox文本框实现垂直居中显示的方法

    这篇文章主要介绍了VB的TextBox文本框实现垂直居中显示的方法,比较实用的功能,需要的朋友可以参考下...

    VB教程网15092021-10-11
  • VBVB返回记录集结果到HTML表格的方法

    VB返回记录集结果到HTML表格的方法

    这篇文章主要介绍了VB返回记录集结果到HTML表格的方法,实例分析了VB获取记录集与HTML表格生成的相关技巧,需要的朋友可以参考下...

    小卒过河10682021-10-15
  • VBVB关机恶搞小程序

    VB关机恶搞小程序

    本文给大家汇总了一些使用VB实现的关机恶搞小程序,大家娱乐一下就行了,千万别做坏事哦...

    VB教程网10142021-10-16
  • VBVB6实现连接Access数据库的ADODB代码实现方法

    VB6实现连接Access数据库的ADODB代码实现方法

    这篇文章主要介绍了VB6实现连接Access数据库的ADODB代码实现方法,对于初学者掌握VB链接access数据库有着很好的借鉴价值,需要的朋友可以参考下...

    VB教程网9832021-10-11
  • VBVB键盘鼠标无动作调用程序的尝试

    VB键盘鼠标无动作调用程序的尝试

    这篇文章主要介绍了VB键盘鼠标无动作调用程序的尝试,记录下整个思路和过程,有需要的小伙伴可以参考下。...

    VB教程网4452021-10-15
  • VB分享如何在VB中调用VC编写的DLL

    分享如何在VB中调用VC编写的DLL

    一般来说,VB和VC共同编程有3种方式:一种是VC生成DLL,在VB中调用DLL;一种是VC生成ActiveX控件(.ocx),在VB中插入;还有一种是在VC中生成ActiveX Automation服务器...

    VB教程网4452021-10-07
  • VBVB获取文件大小的方法

    VB获取文件大小的方法

    这篇文章主要介绍了VB获取文件大小的方法,可实现准确获取文件大小的功能,需要的朋友可以参考下...

    小卒过河13192021-10-15