2009-09-19 4 views
1

J'ai un UserControl pour Windows Forms. Comment puis-je le convertir en un composant? Ce que je veux faire est, pour l'ajouter à la boîte à outils VS, l'ajouter à la forme avec glisser-déposer au moment de la conception et modifier ses propriétés Emplacement et Dock à l'aide de la fenêtre Propriétés. Que dois-je rechercher pour faire cela?Création d'un composant ToolBox avec prise en charge au moment de la conception à l'aide d'un UserControl

J'ai créé quelque chose de similaire auparavant mais c'était une classe Component. Je peux l'ajouter à la boîte à outils VS, l'ajouter au formulaire par glisser-déposer et modifier ses propriétés personnalisées à l'aide de la fenêtre Propriétés, mais comme il s'agit d'un composant affiché sur la partie inférieure du composant.

Répondre

1

Un UserControlest un Component. Vous n'avez rien à faire de plus pour le faire.

Si vous créez un nouveau UserControl dans VS, il aura automatiquement le comportement que vous recherchez: faites glisser de la boîte à outils sur le formulaire, modifiez ses propriétés via le panneau Propriétés.

Ce code crée un contrôle de fonctionnement qui s'affiche dans la boîte à outils et permet de modifier ses propriétés.

public class TestUserControl : UserControl 
{ 
    public TestUserControl() { 
     InitializeComponent(); 
    } 
    /// <summary> 
    /// Required designer variable. 
    /// </summary> 
    private System.ComponentModel.IContainer components = null; 

    /// <summary> 
    /// Clean up any resources being used. 
    /// </summary> 
    /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param> 
    protected override void Dispose(bool disposing) { 
     if (disposing && (components != null)) { 
      components.Dispose(); 
     } 
     base.Dispose(disposing); 
    } 

    #region Component Designer generated code 

    /// <summary> 
    /// Required method for Designer support - do not modify 
    /// the contents of this method with the code editor. 
    /// </summary> 
    private void InitializeComponent() { 
     this.label1 = new System.Windows.Forms.Label(); 
     this.SuspendLayout(); 
     // 
     // label1 
     // 
     this.label1.AutoEllipsis = true; 
     this.label1.Dock = System.Windows.Forms.DockStyle.Fill; 
     this.label1.Font = new System.Drawing.Font("Microsoft Sans Serif", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); 
     this.label1.ForeColor = System.Drawing.SystemColors.ActiveCaptionText; 
     this.label1.Location = new System.Drawing.Point(0, 0); 
     this.label1.Name = "label1"; 
     this.label1.Size = new System.Drawing.Size(231, 51); 
     this.label1.TabIndex = 0; 
     this.label1.Text = "This is a test user control"; 
     this.label1.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; 
     // 
     // TestUserControl 
     // 
     this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); 
     this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; 
     this.BackColor = System.Drawing.SystemColors.ActiveCaption; 
     this.Controls.Add(this.label1); 
     this.Name = "TestUserControl"; 
     this.Size = new System.Drawing.Size(231, 51); 
     this.ResumeLayout(false); 

    } 

    #endregion 

    private System.Windows.Forms.Label label1; 
} 

Peut-être pourriez-vous ajouter cette fonctionnalité à cette classe et voir si cela fonctionne.

Questions connexes