关于dll 中没有可放置在工具箱上的组件 的解决技巧

1,我遇到的问题是再写控件库的扩展类时,没有加public关键字,如

 public class MyListView: System.Windows.Forms.ListView
 {

。。。。

}

如果去掉 public 也可以生成DLL,但当你把它添加到用户控件时就会提示:在e:/mylistview/bin/myListView.dll中没有可放置在工具箱上的组件

2,控件需要有自己的空的构造函数,即使如果存在带参数的构造函数也应存在空的构造函数

View Code
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.ComponentModel;
using System.Windows.Forms;
using System.Drawing;

namespace CustomControlSample
{
    public class FirstControl : Control
    {
        public FirstControl()
        {
        }
        private ContentAlignment alignmentValue = ContentAlignment.MiddleLeft;
        [
        Category("Alignment"),
        Description("Specifies the alignment of text.")
        ]
        public ContentAlignment TextAlignment
        {
            get { return alignmentValue; }
            set 
            {
                alignmentValue = value;
                Invalidate();
            }
        }
        protected override void OnPaint(PaintEventArgs e)
        {
            base.OnPaint(e);
            StringFormat style = new StringFormat();
            style.Alignment = StringAlignment.Near;
            switch (alignmentValue)
            {
                case ContentAlignment.MiddleLeft:
                    style.Alignment = StringAlignment.Near;
                    break;
                case ContentAlignment.MiddleRight:
                    style.Alignment = StringAlignment.Far;
                    break;
                case ContentAlignment.MiddleCenter:
                    style.Alignment = StringAlignment.Center;
                    break;
            }


            e.Graphics.DrawString(
                Text,
                Font,
                new SolidBrush(ForeColor),
                ClientRectangle, style);
        }

    }
}
原文地址:https://www.cnblogs.com/anbylau2130/p/2722358.html