日期:2014-05-17  浏览次数:21001 次

关于winform的用户控件问题
我做了一个用户控件,里面就一个Panel,我在其他界面上拖放了这个用户控件,有什么办法往这个用户控件的Panel里面再拖放别的控件呀,用户控件里的Panel的Modifiers属性已经设置成Public了,求高手指点啊
WinForm 控件 界面

------解决方案--------------------
一般默认情况下,子控件都不能进行“二次设计”的,也就是说,你自定义一个UserControl,在里面放一个Panel,编译后,将这个UserControl拖进设计器,它里面的Panel是不可再设计的,你在设计器中不能再编辑这个Panel。

解决方法:
1.在项目引用中,添加“System.Desgin.dll”的引用;
2.引用命名空间“System.Windows.Forms.Desgin”;
3.自定义一个UserControl控件UserControl1,将一个Panel控件拖进去,生成的代码:

    public partial class UserControl1 : UserControl
    {
        public UserControl1()
        {
            InitializeComponent();
        }
    }

 此时设计界面:
 
 将此Panel设为Public

4.为此UserControl1控件增加一个Desginer(网上查其含义)

    class UserControl1Designer : ScrollableControlDesigner
    {
        public override void Initialize(IComponent component)
        {
            base.Initialize(component);
            if (this.Control is UserControl1)
            {
                this.EnableDesignMode((
                   (UserControl1)this.Control).panel1, "可二次设计的子控件"); //使panel1可二次设计
            }
        }
    }

 注意this.EnableDesignMode的意义: