2010-03-24 2 views
5

Je construis un petit formulaire C# à onglets et je voudrais que chaque page à onglet ait des caractéristiques communes, notamment un bouton OK et un message d'erreur et d'avoir un espace pour le spécifique champs de formulaire.Création d'un contrôle TabPage personnalisé en C#

Est-ce que quelqu'un d'autre a fait quelque chose de similaire et comment l'avez-vous abordé?

+0

Un bouton OK sur chaque page? –

+1

pas correctement une réponse, mais je pense que je vais faire un test prolongeant la tabcontrolpage d'origine, en ajoutant les caractéristiques communes dont vous avez besoin – michele

Répondre

7

Ceci est facile à faire sans étendre TabControl/TabPage.

Définissez un UserControl et placez les éléments communs sur ce que vous voulez sur chaque TabPage.

Sur le formulaire: allez de l'avant et concevez les contrôles spécifiques TabPage que vous voulez pour chaque TabPage: assurez-vous qu'ils ne vont pas chevaucher visuellement les contrôles communs une fois que UserControl a été ajouté.

En cas de charge de forme de votre principale forme quelque chose comme ça:

// form scoped variable to hold a referece to the current UserControl 
    private UserControl1 currentUserControl; 

    private void Form1_Load(object sender, EventArgs e) 
    { 
     foreach(TabPage theTabPage in tabControl1.TabPages) 
     { 
      currentUserControl = new UserControl1(); 

      theTabPage.Margin = new Padding(0); 
      theTabPage.Padding = new Padding(0); 

      theTabPage.Controls.Add(currentUserControl); 

      currentUserControl.Location = new Point(0,0); 

      currentUserControl.Dock = DockStyle.Fill; 

      currentUserControl.SendToBack(); 
     } 
    } 

Même si le « SendToBack est pas vraiment nécessaire ici, il est « assurance » que votre UserControl avec le bouton » OK et TextBox pour un message d'erreur sont placés derrière les contrôles individuels que vous avez assignés à chaque TabPage.

+1

Ceux d'entre vous qui ont voté: comprendre pourquoi ne pas aimer cette solution serait très appréciée. merci, – BillW

+0

@BillW En fait, certains cul ont marqué cela comme spam. Maintenant, je ne sais pas si c'est une bonne réponse mais je sais que ce n'est pas du spam. Donc, +1 pour aider à compenser la perte de rep et neutraliser le rang de votre réponse. –

+0

Bonjour BillW, J'aime cette solution. Je sais que cela signifie que je perds le support du concepteur en termes de "voir" le contrôle, mais je pense que cela fait bien le travail, merci. –

2

Plusieurs idées:

  • que les commandes restent communes en dehors du tabpanel;
  • Étendre le TabPage/TabControl
  • Créez un UserControl de base avec les boutons communs et faites-en usercontrols qui en héritent. Puis placez un usercontrol hérité par TabPage.
Questions connexes