none
解惑Container RRS feed

  • 问题

  • 组件中有个site属性,里面有Container等属性,我发现许多控在设计时有site属性,运行时就为nothing,但是我继承的一个bindingsource在运行时却有site属性的值,开始我理解Container就是Form,后来发现在设计时Form也是Container中的component,但到了运行时Container中componts却只有我继承的一个bindingsource了,对这些问题很不理解,有没有谁能推荐一下介绍这方面的资料.
    2010年1月30日 0:08

答案

  • 你好!
    是不是这个原因:

    只有当 Component 已添加到 IContainer 中并且 IContainer 为其分配了 ISite 时,它才能具有 ISiteIContainer 负责将 ISite 分配给 Component 。更改组件的 ISite 的值未必会更改 Component 所分配到的站点的名称。Site 属性只能由 IContainer 来设置。

    如果 Component 已从它的 IContainer 中移除,属性值则为 空引用(在 Visual Basic 中为 Nothing)。将 空引用(在 Visual Basic 中为 Nothing) 分配给此属性不一定会将 ComponentIContainer 中移除。


    周雪峰
    2010年1月30日 4:25
    版主

全部回复

  • 你好!
         具体可以参考文档中的说明:
    http://msdn.microsoft.com/zh-cn/library/system.componentmodel.component.container%28VS.80%29.aspx
          http://msdn.microsoft.com/zh-cn/library/system.componentmodel.component.site%28VS.80%29.aspx
          希望 对你有帮助!
    周雪峰
    2010年1月30日 4:00
    版主
  • 为什么有些component设计时site有值,而运行时为nothing呢,MSDN中并没有说清楚这方面的问题啊,另外Container 到底是个什么东西,怎么还能把Form包含在内,而到了运行时又不包含各种控件了.
    2010年1月30日 4:18
  • 你好!
    是不是这个原因:

    只有当 Component 已添加到 IContainer 中并且 IContainer 为其分配了 ISite 时,它才能具有 ISiteIContainer 负责将 ISite 分配给 Component 。更改组件的 ISite 的值未必会更改 Component 所分配到的站点的名称。Site 属性只能由 IContainer 来设置。

    如果 Component 已从它的 IContainer 中移除,属性值则为 空引用(在 Visual Basic 中为 Nothing)。将 空引用(在 Visual Basic 中为 Nothing) 分配给此属性不一定会将 ComponentIContainer 中移除。


    周雪峰
    2010年1月30日 4:25
    版主