110,536
社区成员
发帖
与我相关
我的任务
分享
public class ControlDemoDesigner : ParentControlDesigner
{
// 这是关键的重载方法
public override bool CanParent(Control control)
{
if (control is Button) return true; // 允许在控件上放置 Button 控件
return false;
}
}
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Text;
using System.Windows.Forms;
using System.Windows.Forms.Design; // 在这里using前要先添加引用“System.Design”
namespace WindowsControlLibrary2
{
[Designer(typeof(UserControlDesigner))]
public partial class UserControl1 : UserControl
{
[DesignerSerializationVisibility(DesignerSerializationVisibility.Content)]
public Panel ContentArea
{
get
{
return panel1; // 在上面放一个Panel,名字叫 panel1
}
}
public UserControl1()
{
InitializeComponent();
// 我这里的设置只是让panel更醒目点
this.Size = new Size(700, 700);
this.BackColor = Color.Gray;
panel1.Size = new Size(500, 500);
panel1.ForeColor = Color.Black;
panel1.Parent = this;
}
private void panel1_ControlAdded(object sender, ControlEventArgs e)
{
e.Control.Parent = panel1; // 加了个事件,指定拖进来的控件绑定到控件内部的panel1上去
}
}
public class UserControlDesigner : ControlDesigner
{
public override void Initialize(System.ComponentModel.IComponent Ic)
{
base.Initialize(Ic);
UserControl1 UC = (UserControl1)Ic;
EnableDesignMode(UC.ContentArea, "ContentArea");
}
}
}
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Text;
using System.Windows.Forms;
using System.Windows.Forms.Design; // 在这里using前要先添加引用“System.Design”
namespace WindowsControlLibrary2
{
[Designer(typeof(UserControlDesigner))]
public partial class UserControl1 : UserControl
{
[DesignerSerializationVisibility(DesignerSerializationVisibility.Content)]
public Panel ContentArea
{
get
{
return panel1; // 在上面放一个Panel,名字叫 panel1
}
}
public UserControl1()
{
InitializeComponent();
// 我这里的设置只是让panel更醒目点
this.Size = new Size(700, 700);
this.BackColor = Color.Gray;
panel1.Size = new Size(500, 500);
panel1.ForeColor = Color.Black;
}
}
public class UserControlDesigner : ControlDesigner
{
public override void Initialize(System.ComponentModel.IComponent Ic)
{
base.Initialize(Ic);
UserControl1 UC = (UserControl1)Ic;
EnableDesignMode(UC.ContentArea, "ContentArea");
}
}
}