2011-03-12 2 views
0

J'ai conçu quelques contrôles personnalisés à utiliser avec une barre d'outils, et j'ai donc sous-classé ToolStripControlHost. Dans ce cas, une case à cocher ... Mon code ressemble à ceci:Le concepteur Windows Forms supprime mon code

public class ToolStripCheckBox : ToolStripControlHost 
{ 
    public ToolStripCheckBox() 
     : base(new CheckBox()) 
    { 
    } 

    public CheckBox CheckBoxControl 
    { 
     get 
     { 
      return Control as CheckBox; 
     } 
    } 
} 

Quand je les taper dans mon dossier Form1.Designer.cs ils fonctionnent très bien, mais quand je fais des modifications dans le concepteur, une partie de mon code personnalisé disparaissent de Form1.Designer.cs , plus spécifiquement les gestionnaires d'événements et les apparences personnalisées. Par exemple cette ligne disparait

this.boldCheckBox.CheckBoxControl.Appearance = System.Windows.Forms.Appearance.Button; 

Il est un peu ennuyeux, et je n'ai aucune idée de quoi faire :-(

Répondre

7

Les Form1.Designer.cs est entretenue par le concepteur et ne doit pas être modifiée. Un tel les tâches doivent être exécutées dans le constructeur pour votre Form1, dans Form1.cs, juste après la fonction « InitializeComponent » (Il dit même // TODO: Add initialization code here ou quelque chose comme ça).

vous pouvez coder votre contrôle personnalisé avec la conception complète

+0

Vous ne pouvez pas coller une classe (obligatoire ici) dans le constructeur d'un formulaire. –

1

Ce code n'appartient pas au fichier Designer.cs, le concepteur le mange. Il n'appartient pas non plus au fichier de code source du formulaire, seul le code correspondant à la classe de formulaire doit y être écrit. Projet + Ajouter une classe. Il est ajouté automatiquement à la boîte à outils après la compilation.