c#ParentControlDesigner-IDesignerHost-为数据网格视图提供对齐线

问题描述

我尝试使用自定义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);
        }
    }
}

当该行处于非活动状态并且用户控件已添加到表单中时:

  1. DataGridiew可以移动,在必要时会显示按钮和复选框对齐线,但是在移动按钮或复选框时不会显示DataGridiew快照线,
  2. 设计者仅将用户控件创建为私有成员,并创建相关控件(复选框,按钮,datagridview)。

线路处于活动状态时:

  1. 与1相同。但是会出现DataGridiew对齐线,
  2. 表单设计者将用户控件和DataGridiew添加为私有成员。 并产生如下所示的效果。

当表单设计者添加到DataGridiew的容器中时,为什么它仅为DataGridiew创建一个新实例? 并在其他控件之一移动时使DataGridiew对齐线出现的诀窍是什么?

有什么想法吗?

designer vs runtime

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...