我已经实现了一个继承自 DocumentDesigner 的自定义设计器类。.NET Framework 中的标准 Form 类使用 FormDocumentDesigner 类(也继承自 DocumentDesigner),但由于此类是内部的,因此无法从它继承并自定义其行为,我通过使用反射器复制了此类中的逻辑并插入它在我的自定义设计器类中(以便我的表单的默认设计时行为符合标准表单)。
一切正常,除了一件事:在我的自定义设计器类的 Initialize 方法中,我想插入一个 ToolStrip 控件,以便每次在设计时打开我的表单时,该控件都是可见和可编辑的。问题是每次在设计器中关闭并重新打开窗体时都会调用 Initialize 方法,这会导致每次创建 ToolStrip 控件的新实例并将其添加到窗体的 Controls 集合中。我正在寻找一种方法来检查代码中是否已经有一个 ToolStrip 控件序列化并避免添加另一个。
到现在才发现可以使用IDesignerHost的LoadComplete事件,检查Form的Controls集合中是否有ToolStrip。但是,任何更好的想法将不胜感激。
谢谢你的时间!:-)