.NET 解決TabControl 頁里面多余邊距問題經(jīng)驗分享

字號:


    以下是解決方法:
    1.直接新建一個類,繼承TabControl,然后 override DisplayRectangle 方法:
    復(fù)制代碼代碼如下:
    /// <summary>
    /// 解決系統(tǒng)TabControl多余邊距問題
    /// </summary>
    public class FullTabControl : TabControl {
    public override Rectangle DisplayRectangle {
    get {
    Rectangle rect = base.DisplayRectangle;
    return new Rectangle(rect.Left - 4, rect.Top - 4, rect.Width + 8, rect.Height + 7);
    }
    }
    }
    以后用 FullTabControl 就行。(這種方法簡單)
    2.參見以下網(wǎng)址(VB.NET)代碼:
    http://www.blueshop.com.tw/board/FUM20050124191756KKC/BRD201112281018075B8.html
    C# 代碼為:
    復(fù)制代碼代碼如下:
    public class FullTabControl : NativeWindow {
    static int TCM_FIRST = 0x1300;
    static int TCM_ADJUSTRECT = (TCM_FIRST + 40);
    struct RECT{
    public int Left, Top, Right, Bottom;
    }
    protected override void WndProc(ref Message m) {
    if (m.Msg == TCM_ADJUSTRECT) {
    RECT rc = (RECT)m.GetLParam(typeof(RECT));
    rc.Left -= 4;
    rc.Right += 3;
    rc.Top -= 4;
    rc.Bottom += 3;
    Marshal.StructureToPtr(rc, m.LParam, true);
    }
    base.WndProc(ref m);
    }
    }
    調(diào)用方法:new FullTabControl().AssignHandle(tabControl1.Handle);// tabControl1為窗口上TabControl控件的名稱