I'm trying to vertically centre the text in a NumericUpDown control. I'm fairly sure there's no property i can change, but is there an API i could use? Does anyone have any experience with this?
I tried this, and it didn't work...
Code:Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" ( _ ByVal hwnd As IntPtr, _ ByVal wMsg As Integer, _ ByVal wParam As Integer, _ ByVal lParam As RECT _ ) As Integer Private Structure RECT Dim Left As Integer Dim Top As Integer Dim Right As Integer Dim Bottom As Integer End Structure Private Const EM_SETRECT As Integer = &HB3 Private Const EM_GETRECT As Integer = &HB2Anyone know how to do this?Code:Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load For Each nud As NumericUpDown In Me.Controls.OfType(Of NumericUpDown)() Dim tb As TextBox = DirectCast(nud.Controls(1), TextBox) Dim myRect As New RECT Dim sf As New SizeF sf = tb.CreateGraphics.MeasureString("1", tb.Font) 'set rectangle to match text height and center it Dim textHeight As Integer = CInt(sf.Height) 'Dim boxHeight As Integer = tb.ClientSize.Height myRect.Left = 0 myRect.Right = tb.ClientSize.Width myRect.Top = 2 myRect.Bottom = myRect.Top + textHeight SendMessage(tb.Handle, EM_SETRECT, 0, myRect) Next End Sub


Reply With Quote