删除/编辑标签页的TabControl填充

本文关键字:TabControl 填充 标签 编辑 删除 | 更新日期: 2023-09-27 18:02:37

我使用System.Windows.Forms.TabControl来列出自定义页面,但是似乎在Tabcontrol的所有方面都有一个硬编码的3像素填充。

我该如何删除它。这里的一点是我不想删除顶部的制表符

http://social.msdn.microsoft.com/Forums/en-US/winforms/thread/a8c5bc93-8f76-42e7-b501-b12f8b5bd1eb/

我发现上面的MSDN链接确实删除了所有方面的边距,包括顶部的TabItems,这是我不想要的。

提前感谢!

删除/编辑标签页的TabControl填充

这是我唯一可以修改padding的方法。

Imports System.Runtime.InteropServices
Public Class NativeTabControl
    Inherits NativeWindow
    Private Const TCM_FIRST As Int32 = &H1300
    Private Const TCM_ADJUSTRECT As UInt32 = (TCM_FIRST + 40)
Private baseCtrl As TabControl
Public Sub New(ByVal ctrl As TabControl)
    Me.baseCtrl = ctrl
    AddHandler ctrl.HandleDestroyed, AddressOf OnHandleDestroyed
    Me.AssignHandle(ctrl.Handle)
End Sub
Private Sub OnHandleDestroyed(ByVal sender As Object, ByVal e As EventArgs)
    ' Window was destroyed, release hook.
    RemoveHandler baseCtrl.HandleDestroyed, AddressOf OnHandleDestroyed
    Me.ReleaseHandle()
End Sub
Protected Overrides Sub WndProc(ByRef m As Message)
    If (m.Msg = TCM_ADJUSTRECT) Then
        Dim rc As RECT = DirectCast(m.GetLParam(GetType(RECT)), RECT)
        'Adjust these values to suit, dependant upon Appearance
        rc.Left -= 3
        rc.Right += 1
        rc.Top -= 1
        rc.Bottom += 1
        Marshal.StructureToPtr(rc, m.LParam, True)
    End If
    MyBase.WndProc(m)
End Sub
Private Structure RECT
    Public Left, Top, Right, Bottom As Int32
End Structure
End Class