Вертикальный текст на кнопке управления VB
Одна из моих кнопок на форме должна показывать вертикальный текст, например:
S
T
О
п
Я нашел решения, включающие переопределение Paint, которое кажется слишком сложным для такой простой задачи. Я попробовал это:
Private Sub LabelStopButton()
Dim btTitle As String = "S" & vbCrLf & "T" & vbCrLf & "O" & vbCrLf & "P" & vbCrLf
Me.btnStop.Text = btTitle
End Sub
а также попытался заменить vbCrLf на: vbCr, vbLf, Environment.NewLine - безрезультатно, тот же результат: на кнопке отображается только первая буква "S". Смотрите изображение.
Использование Visual Studio 2008 (это приложение для старого устройства WinCE 6.0).
Любой совет? Спасибо!
2 ответа
Это дубликат существующего вопроса
См. /questions/44509222/dvuhstrochnaya-tekstovaya-knopka-v-compact-framework/44509234#44509234
Преобразованный код для справки:
Вам нужно установить кнопку, чтобы разрешить несколько строк. Это может быть достигнуто с помощью следующего кода P/Invoke.
Private Const BS_MULTILINE As Integer = &H2000
Private Const GWL_STYLE As Integer = -16
<System.Runtime.InteropServices.DllImport("coredll")> _
Private Shared Function GetWindowLong(hWnd As IntPtr, nIndex As Integer) As Integer
End Function
<System.Runtime.InteropServices.DllImport("coredll")> _
Private Shared Function SetWindowLong(hWnd As IntPtr, nIndex As Integer, dwNewLong As Integer) As Integer
End Function
Public Shared Sub MakeButtonMultiline(b As Button)
Dim hwnd As IntPtr = b.Handle
Dim currentStyle As Integer = GetWindowLong(hwnd, GWL_STYLE)
Dim newStyle As Integer = SetWindowLong(hwnd, GWL_STYLE, currentStyle Or BS_MULTILINE)
End Sub
Используйте это так:
MakeButtonMultiline(button1)
Я создал вертикальный текст на кнопке со следующими кодами:
CommandButton1.Caption = "F" & Chr(10) & "I" & Chr(10) & "L" & Chr(10) & "T" & Chr(10) & "E" & Chr(10) & "R" & Chr(10)