none
自定义component的集合属性命名问题 RRS feed

  • 问题

  • 自定义了一个component组件,有一个FieldCollection的集合属性,其子元素Field为可序列化类。在设计器中编辑定义了3个集合元素后,InitializeComponent可自动生成Field对象并命名(按Field1,Field2,Filed3顺序生成Dim Field1 As New Field...等语句)。但在该窗体设计器(进行其他操作)后,再次回到该窗体设计器,发现提示“未声明Field1”。打开Form.Designer.vb查看InitializeComponent过程,发现声明集合元素的名称变成了Dim Field4 As New Field...

    请问是否因为自定义的Component组件反序列化时的问题?如何破?

    2017年1月9日 6:04

全部回复

  • 你好,

    Thank you for posing here.

    这或许与你自定义的component组件的逻辑算法有关,你是否自定义了IContianer? 如果是,或许是你在自定义时出错,你可以借鉴MSDN相关文档:https://msdn.microsoft.com/en-us/library/system.componentmodel.icontainer(v=vs.110).aspx

    希望以上内容对你有所帮助。

    Best Regards,

    Neda Zhang


    MSDN Community Support
    Please remember to click "Mark as Answer" the responses that resolved your issue, and to click "Unmark as Answer" if not. This can be beneficial to other community members reading this thread. If you have any compliments or complaints to MSDN Support, feel free to contact MSDNFSF@microsoft.com.

    2017年1月10日 3:18
    版主
  • 这个地方有问题“InitializeComponent可自动生成Field对象并命名(按Field1,Field2,Filed3顺序”

    生成Field对象之前要获取窗体现有的FieldCollection的集合属性,有则不生成。


    专注于.NET ERP/CRM开发框架,C/S架构,SQL Server + ORM(LLBL Gen Pro) + Infragistics WinForms

    2017年1月10日 9:02
  • 这个地方有问题“InitializeComponent可自动生成Field对象并命名(按Field1,Field2,Filed3顺序”

    生成Field对象之前要获取窗体现有的FieldCollection的集合属性,有则不生成。


    专注于.NET ERP/CRM开发框架,C/S架构,SQL Server + ORM(LLBL Gen Pro) + Infragistics WinForms


    谢谢回复。InitializeComponent代码是由VS 2010自动的,如何介入?在反序列化component时吗?还是在构建实例时New(container as IContainer)的时候判断?或者和INameCreationService有关?
    2017年1月12日 9:34
  • 你好,

    据我所知,InitializeComponent代码是在创建窗体时,由VS自动生成的,没有办法介入修改它。

    Best Regards,

    Neda Zhang


    MSDN Community Support
    Please remember to click "Mark as Answer" the responses that resolved your issue, and to click "Unmark as Answer" if not. This can be beneficial to other community members reading this thread. If you have any compliments or complaints to MSDN Support, feel free to contact MSDNFSF@microsoft.com.


    2017年1月19日 6:06
    版主