2012-11-18 67 views
2

我已經被設置爲Determain一個TabRow的一個TabControl(VB.NET)的高度

Multiline = True 

我做我自己的自定義RowsChanged事件

''' <summary> 
''' Event that is raised if the rowCount of the control changed. 
''' </summary> 
Public Event RowsChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) 

Private Sub Me_SizeChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Me.SizeChanged, Me.SelectedIndexChanged, Me.ControlAdded, Me.ControlRemoved 
    If rows <> Me.RowCount Then 
     rows = Me.RowCount 
     RaiseEvent RowsChanged(sender, e) 
    End If 
End Sub 

現在我可以一個WinForms TabControl註冊該事件。我想知道,一排的高度,所以我可以做一些尺寸計算。有什麼方法可以阻止這種情況?到目前爲止,我只是計算像素,這不是很好。

+2

使用TabControl.GetTabRect()方法找出標籤所在的位置。 GetTabRect(0).Height讓你獲得行高。 –

+0

@HansPassant:測試'GetTabRect'方法 - 這是解決方案。請作爲答覆發佈。 – Neolisk

+0

@HansPassant:我可以繼續Neolisk說的。請添加您的解決方案作爲答案。奇蹟般有效。 –

回答

4

正如評論指出的那樣,你可以使用TabControl.GetTabRect()方法在運行時檢索標籤的邊界。請注意,當用戶瀏覽標籤和行交換位置時,​​它可能會在多行選項卡控件上更改。