问题描述
我尝试使用自定义System.Windows.Forms.Design.ParentControlDesigner
扩展用户控件。
在此控件上,有一个复选框,一个按钮和一个DataGridiew
,该控件为每个控件具有三个吸气剂,并且以下类用作设计器:
class MyDesigner : System.Windows.Forms.Design.ParentControlDesigner
{
public override void Initialize(IComponent comp)
{
base.Initialize(comp);
UserControl1 uc = (UserControl1)comp;
if (uc == null)
{
return;
}
// user controls are editable
EnableDesignMode(uc.Checkbox,"CheckBox");
EnableDesignMode(uc.DataGridView,"DataGridView");
EnableDesignMode(uc.Button,"Button");
// when moving controls,snaplines will be drawn
IDesignerHost dh = GetService(typeof(IDesignerHost)) as IDesignerHost;
if (dh != null)
{
dh.Container.Add(uc.Checkbox);
dh.Container.Add(uc.Button);
// strange behaviour,when dgv is moved and application starts...
//dh.Container.Add(uc.DataGridView);
}
}
}
当该行处于非活动状态并且用户控件已添加到表单中时:
-
DataGridiew
可以移动,在必要时会显示按钮和复选框对齐线,但是在移动按钮或复选框时不会显示DataGridiew
快照线, - 设计者仅将用户控件创建为私有成员,并创建相关控件(复选框,按钮,datagridview)。
线路处于活动状态时:
- 与1相同。但是会出现
DataGridiew
对齐线, - 表单设计者将用户控件和
DataGridiew
添加为私有成员。 并产生如下所示的效果。
当表单设计者添加到DataGridiew
的容器中时,为什么它仅为DataGridiew
创建一个新实例?
并在其他控件之一移动时使DataGridiew
对齐线出现的诀窍是什么?
有什么想法吗?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)