自定义设计器代码中的组件名称重复

时间:2018-07-02 22:57:08

标签: c# visual-studio-2017 windows-forms-designer

我有一个UserControl,可以在设计时期间动态创建自己的控件。我正在尝试启用这些控件的编辑。到目前为止,我已经给我的UserControl这个属性:[Designer(typeof(OuterControlDesigner))]使其使用此设计器代码:

public class OuterControlDesigner : ControlDesigner
{
  public override void Initialize(IComponent component)
  {
    base.Initialize(component);
  }
  public void AddControl(Control ctrl, string name)
  {
    this.EnableDesignMode(ctrl, name); //<--ERROR HERE
  }
}

当我动态添加控件时,我运行AddControl。效果很好,我可以选择动态创建的控件并查看其属性。

当我需要重新生成动态控件时,问题就来了。运行AddControl(第二次)时,出现此错误:

System.ArgumentException: 'Duplicate component name 'cbb1'.  Component names must be unique and case-insensitive.'

这很有道理,但是,我不知道该如何解决。如果我不在新的控件实例上运行此代码,则无法在设计器中选择它。

FWIW,我要通过从this.Controls.Clear()调用UserControl来删除控件。我是否需要通知设计者有关控件的删除?我该怎么做?

0 个答案:

没有答案