我要添加一个相当于tag属性的控件Public Property Get Mytag() As String
Mytag= iMytag
End Property
Public Property Let Mytag(tagString As String)
iMytag = tagString
End PropertyiMytag 是定义的一个字符串变量可是控件拉到窗体的时候,给Mytag的属性赋一个值,运行窗体,
窗体退出后mytag的属性又变成空了,这是怎么回事?

解决方案 »

  1.   

    使用PropertyBag对象保存控件的属性
    具体的用法参考msdn吧
      

  2.   

    你用ActiveX接口向导创建你的属性,它会同时生成属性值的保存代码。
      

  3.   

    存储了属性值的私有变量名,由作用域前缀 ,类型前缀和名称 组成,其中,作用域前缀 (m) 指明变量是模块级的。使用与属性相同的名称可指明该变量和属性是相关的。mstrMytag = tagString
      

  4.   

    属性值的任何变化都必须通知 Visual Basic。为了做到这一点,需要在每次成功的 Property Let 或 Property Set 的尾部调用 UserControl 对象的 PropertyChanged 方法,如下面的代码片断所示。Private mblnMasked As BooleanPublic Property Get Masked() As Boolean
       Masked = mblnMasked
    End PropertyPublic Property Let Masked(ByVal NewValue As Boolean)
       mblnMasked = NewValue
       PropertyChanged "Masked"
    End Property有两个原因决定需要通知 Visual Basic 属性值的改变: 如果不调用 PropertyChanged,Visual Basic 就不能把控件实例标记为需要保存的。因此它们将不会收到 WriteProperties 事件,使用控件的开发者将丢失在设计时设置的任何属性值。
    因为属性值可能显示在多个地方,因此当属性值发生改变时必须通知开发环境,以便使它能够同步显示“属性”窗口、“属性页”对话框等位置上的属性值。