【问题标题】:Associate instances of Designer and Component?关联设计器和组件的实例?
【发布时间】:2013-11-30 20:46:42
【问题描述】:

VS2008下的VB.NET

我创建了一个带有 Designer 属性的组件:

<Designer(GetType(MyComponentDesigner))> _
Public Class MyComponent
    (etc....)

据我了解,MyComponentDesigner 的实例将与 MyComponent 的每个实例一起创建。是这样吗?

如果是这样,MyComponentDesigner 的每个实例都需要引用“它的”MyComponent。怎么样?

(澄清一下:设计器所做的一件事是实现一个人民币“动词”。当 MyComponent 用户单击该动词时,处理程序需要调用用户右键单击的 MyComponent 的特定实例以查看该动词。 )

任何指导表示赞赏。

【问题讨论】:

    标签: vb.net attributes components designer


    【解决方案1】:

    谢谢大家。

    我发现了 MyComponentDesigner 的 Component 属性,我可以将其转换为 MyComponent 以获得我需要的引用。

    【讨论】:

      【解决方案2】:

      由于用户(开发人员)一次只能编辑一个组件,因此一次只能与一个主动交互。此外,“设计师”是一个广义术语,因为有许多设计师类型,所以部分答案是“视情况而定”。

      当您的设计人员需要对正在编辑的组件的引用时,NET 会传递对它的引用。例如,对于 SmartTags(继承 DesignerActionList),构造函数是:

      Sub New(ByVal component As IComponent)
          MyBase.New(component)
          m_Control = CType(component, myControl)
      End Sub
      

      其他 UIEditor 的构造函数(如集合编辑器)你没有在构造函数中获得引用,因为你还不需要它。他们可能稍后会传递组件/上下文:

        Protected Overrides Sub LoadValues(ByVal context _
               As ITypeDescriptorContext, _
               ByVal provider As System.IServiceProvider, ByVal value As Object)
      

      何时以及如何获得对组件的引用取决于您的设计器将从哪个基本编辑器类型继承。

      【讨论】:

        猜你喜欢
        • 2019-07-23
        • 1970-01-01
        • 2010-10-08
        • 2013-06-07
        • 1970-01-01
        • 1970-01-01
        • 2010-09-22
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多