如何在visual studio 2015中创建自定义控件并将其添加到工具箱中

时间:2017-01-08 19:31:41

标签: c# dll

我想创建一个在类库项目中绘制表的控件。并将此dll添加到工具箱并在我的Windows窗体应用程序中使用它。我尝试谷歌搜索,但我无法找到。 我该怎么办?

我在类库项目中创建了这个类

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Drawing;
using System.Data;
using System.Windows.Forms;
namespace ClassLibrary1
{
class PanelZ : System.Windows.Forms.Panel
{
    private Color color1 = Color.SteelBlue;
    private Color color2 = Color.DarkBlue;
    private int color1Transparent = 150;
    private int color2Transparent = 150;
    private int angle = 90;

    public Color StartColor
    {
        get { return color1; }
        set { color1 = value; Invalidate(); }
    }
    public Color EndColor
    {
        get { return color2; }
        set { color2 = value; Invalidate(); }
    }
    public int Transparent1
    {
        get { return color1Transparent; }
        set
        {
            color1Transparent = value;
            if (color1Transparent > 255)
            {
                color1Transparent = 255;
                Invalidate();
            }
            else
                Invalidate();
        }
    }

    public int Transparent2
    {
        get { return color2Transparent; }
        set
        {
            color2Transparent = value;
            if (color2Transparent > 255)
            {
                color2Transparent = 255;
                Invalidate();
            }
            else
                Invalidate();
        }
    }

    public int GradientAngle
    {
        get { return angle; }
        set { angle = value; Invalidate(); }
    }
    public PanelZ()
    {
    }
    protected override void OnPaint(PaintEventArgs e)
    {
        base.OnPaint(e);
        Color c1 = Color.FromArgb(color1Transparent, color1);
        Color c2 = Color.FromArgb(color2Transparent, color2);
        Brush b = new System.Drawing.Drawing2D.LinearGradientBrush(ClientRectangle, c1, c2, angle);
        e.Graphics.FillRectangle(b, ClientRectangle);
        b.Dispose();
    }
}

}

但是当我将mydll添加到工具箱时,我收到此错误 image here

1 个答案:

答案 0 :(得分:2)

在WPF或Winforms中,Toolbox非常了解您正在构建的解决方案中的组件。对于Winforms,只需将System.Windows.FormsSystem.Drawing的引用添加到您的类库中,然后从Control(或继承自Control的任何其他类)继承。

例如,我可以像这样创建一个自定义控件(注意它必须是工具箱的公共控件才能找到它):

using System.Drawing;
using System.Windows.Forms;

namespace ClassLibrary1
{
    public class CustomControl : Control
    {
        public CustomControl()
        {
            this.BackColor = Color.Red;
        }
    }
}

构建项目后,我可以在工具箱中与我的应用程序中的表单进行交互时看到它。

enter image description here