国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Visual Basic > 正文

VB的TextBox文本框實現垂直居中顯示的方法

2020-01-31 16:31:08
字體:
來源:轉載
供稿:網友

本文實例代碼可以實現讓VB的TextBox文本框垂直居中顯示效果。此處需要注意:Form_Load()窗體代碼中的多行屬性設置必須為真,即Text1.MultiLine = True,該屬性為只讀屬性,請在設計時修改,換行會被之后的代碼屏蔽,不想屏蔽可自行修改,調用此函數就好了。

具體的功能代碼如下:

'================================================================================'| 模 塊 名 | TextBoxMiddle'| 說  明 | 文本框居中顯示'=================================================================================Option ExplicitPrivate Type RECT  Left  As Long  Top  As Long  Right  As Long  Bottom  As LongEnd TypePrivate Declare Function SendMessage Lib "user32 " Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As LongPrivate Declare Function SetWindowText Lib "user32" Alias "SetWindowTextA" (ByVal hwnd As Long, ByVal lpString As String) As LongPrivate 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 LongPrivate Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As LongPrivate Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As LongPrivate Const EM_GETRECT = &HB2Private Const EM_SETRECTNP = &HB4Private Const GWL_WNDPROC = (-4)Private Const WM_CHAR = &H102Private Const WM_PASTE As Long = &H302Private prevWndProc   As LongPublic ClipText As StringPublic Sub DisableAbility(TargetTextBox As TextBox)  prevWndProc = GetWindowLong(TargetTextBox.hwnd, GWL_WNDPROC)  SetWindowLong TargetTextBox.hwnd, GWL_WNDPROC, AddressOf WndProcEnd SubPrivate 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 SelectEnd FunctionSub 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 mTextEnd Sub'///////////////////////////////////////////////////////'以下為窗體代碼'///////////////////////////////////////////////////////Private Sub Form_Load()  '================注意!!!=================  '多行屬性必須為真,暨Text1.MultiLine = True  '該屬性為只讀屬性,請在設計時修改  '換行會被之后的代碼屏蔽,不想屏蔽可自行修改  '===========================================  '調用此函數就好了  VerMiddleText Me, Text1  Caption = Len(Text1)End Sub

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 涟源市| 监利县| 礼泉县| 三门峡市| 甘德县| 来宾市| 五指山市| 锡林浩特市| 蓬莱市| 新昌县| 黎平县| 武城县| 海盐县| 盐亭县| 独山县| 兴安县| 郴州市| 富民县| 东海县| 日土县| 泽普县| 嘉兴市| 桐乡市| 当雄县| 烟台市| 犍为县| 高尔夫| 三原县| 克拉玛依市| 灵寿县| 霞浦县| 和田市| 平谷区| 会东县| 清原| 临邑县| 江华| 曲阳县| 永州市| 沙河市| 辰溪县|