Вертикальный текст на кнопке управления 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)

Источник пользовательской формы

Другие вопросы по тегам