Создание компонента ToolBox с поддержкой во время разработки с помощью UserControl

У меня есть UserControl для Windows Forms. Как я могу преобразовать его в компонент? Что я хочу сделать, так это добавить его на панель инструментов VS, добавить его в форму с помощью перетаскивания во время разработки и изменить его свойства Location и Dock с помощью окна свойств. Что я должен искать, чтобы сделать это?

Я уже создавал что-то подобное раньше, но это был класс Component. Я могу добавить его на панель инструментов VS, добавить его в форму с помощью перетаскивания и изменить его пользовательские свойства с помощью окна свойств, но, поскольку это компонент, он отображается в нижней области компонента и не имеет поддержки во время разработки.


person dstr    schedule 19.09.2009    source источник


Ответы (1)


UserControl является Component. Вам не нужно делать ничего дополнительно, чтобы сделать это так.

Если вы создадите новый UserControl в VS, он автоматически будет вести себя так, как вы ищете: перетащите из панели инструментов в форму, измените его свойства через панель «Свойства».

Этот код создает функционирующий элемент управления, который отображается в наборе инструментов и позволяет изменять его свойства.

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;
}

Возможно, вы могли бы добавить свою функциональность в этот класс и посмотреть, работает ли она тогда.

person Grammarian    schedule 20.09.2009