2014-02-21 61 views
0

我發現這個Vertical Text on Button Control我認爲這看起來很容易,但我不能得到它的工作。使用onPaint在窗體中的垂直文本

Public Class VerticalButton3 

    Inherits System.Windows.Forms.Button 

    Private _VerticalText As String 
    Public Property VerticalText() As String 
     Get 
      Return _VerticalText 
     End Get 
     Set(ByVal value As String) 
      _VerticalText = value 
     End Set 
    End Property 

    Private Fmt As New StringFormat 

    Public Sub New() 
     Fmt.Alignment = StringAlignment.Center 
     Fmt.LineAlignment = StringAlignment.Center 
    End Sub 

    Protected Overrides Sub OnPaint(ByVal PaintEvt As System.Windows.Forms.PaintEventArgs) 
     MyBase.OnPaint (PaintEvt) 
     PaintEvt.Graphics.TranslateTransform(Width, 0) 
     PaintEvt.Graphics.RotateTransform (90) 
     PaintEvt.Graphics.DrawString(_VerticalText, Font, Brushes.Black, New Rectangle(0, 0, Height, Width), Fmt) 
    End Sub 

End Class 

Button 但我得到的垂直和水平文本。

我試圖用Public Overrides Property Text()類似Vertical Label Control in VB.NET,但沒有工作,要麼

如何我只得到豎排文字?

+1

而'Text'屬性是空的? – OneFineDay

+0

它適合我。確保沒有設置「Text」屬性。 – OneFineDay

+0

當我設置文本爲「」時,它的工作,但我不知道如何設置文本後。我想太多的改變模糊了發生的事情。但班斯已經回答了這個問題。 –

回答

1

我測試了你的代碼。它的工作原理根據您的需要,如果你設置Text屬性設置爲「」

這裏是我試過

Private WithEvents vbtn As New VerticalButton3 
Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load 
    vbtn.Top = 0 
    vbtn.Left = 0 
    vbtn.Text = "" ' Note Text property is set to "" 
    vbtn.VerticalText = "Vertical" 
    vbtn.Height = 100 
    Controls.Add(vbtn) 

End Sub 

或者,你可以在構造函數中使用Text=""類的代碼

Public Sub New() 
    Fmt.Alignment = StringAlignment.Center 
    Fmt.LineAlignment = StringAlignment.Center 
    Text = "" 
End Sub 

編輯:我認爲重寫Text屬性本身更好,因爲如果錯誤地設置了Text屬性,則兩者都可能顯示出來。以下是如何覆蓋Text屬性(您可能不再需要VerticalText屬性)。

Public Shadows Property Text 
    Get 
     Return _VerticalText 
    End Get 
    Set(ByVal value) 
     _VerticalText = value 
    End Set 
End Property 
+1

使用公共覆蓋而不是公共陰影怎麼樣? –

+0

那麼我試圖使用公共覆蓋,但無法使其工作 –

+0

陰影隱藏類'System.Windows.Forms.ButtonBase'的屬性我不完全知道爲什麼技術上覆蓋不起作用。但實際上它不起作用 – bansi