2010-04-02 6 views

Répondre

5

Si quelqu'un rencontre le même problème, voici la réponse a fonctionné pour moi Border TabControl

Comme décrit, Faire un objet NativeTabControl et Affectez la poignée du tabcontrol dont vous voulez supprimer la bordure. Vous pouvez utiliser cette classe NativeTabControl en tant que classe interne dans la classe de formulaire. Vous n'avez rien à changer dans la classe interne. Suivez simplement les étapes ci-dessus. Tous les crédits doivent aller au concepteur original du code. Je suis juste en train de le mettre ici pour tous ceux qui rencontrent le même problème et ont besoin d'une réponse sympa et sexy!

using System; 
using System.Collections; 
using System.Collections.Generic; 
using System.Data; 
using System.Diagnostics; 
using System.Runtime.InteropServices; 
using System.Windows.Forms; 

public class Form1 
{ 


public Form1() 
{ 
    // This call is required by the Windows Form Designer. 
    InitializeComponent(); 

    // Add any initialization after the InitializeComponent() call. 
    this.NativeTabControl1 = new NativeTabControl(); 
    this.NativeTabControl2 = new NativeTabControl(); 
    this.NativeTabControl1.AssignHandle(this.TabControl1.Handle); 
    this.NativeTabControl2.AssignHandle(this.TabControl2.Handle); 
} 

private NativeTabControl NativeTabControl1; 

private NativeTabControl NativeTabControl2; 
private class NativeTabControl : NativeWindow 
{ 

    protected override void WndProc(ref Message m) 
    { 
     if ((m.Msg == TCM_ADJUSTRECT)) { 
      RECT rc = (RECT)m.GetLParam(typeof(RECT)); 
      //Adjust these values to suit, dependant upon Appearance 
      rc.Left -= 3; 
      rc.Right += 3; 
      rc.Top -= 3; 
      rc.Bottom += 3; 
      Marshal.StructureToPtr(rc, m.LParam, true); 
     } 
     base.WndProc(ref m); 
    } 

    private const Int32 TCM_FIRST = 0x1300; 
    private const Int32 TCM_ADJUSTRECT = (TCM_FIRST + 40); 
    private struct RECT 
    { 
     public Int32 Left; 
     public Int32 Top; 
     public Int32 Right; 
     public Int32 Bottom; 
    } 

} 

}

+0

Bienvenue dans Stack Overflow! Bien que cela puisse théoriquement répondre à la question, [il serait préférable] (http://meta.stackexchange.com/q/8259) d'inclure ici les parties essentielles de la réponse et de fournir le lien pour référence. – Kev

+0

Ceci est un grand morceau de code, et merci de l'avoir diffusé! Juste incase n'importe qui n'aime pas le fait qu'il n'y a pas de ligne horizontale supérieure séparant les boutons Tab de leur contenu en bas, en changeant simplement 'rc.Top - = 3;' en 'rc.Top - = 1;' mettra un ligne horizontale supérieure là-haut. – Tommy

Questions connexes