我开发了一个表单设计器,还开发了一些继承自标准控件(如按钮)的自定义控件。
另外,我有一些相关的属性,例如用户必须首先选择部门,然后选择人。并且在用户选择person之后,我设置了我的自定义控件的Text(在这种情况下从按钮继承)。
注意:用户可以更改Text属性。
一切正常,但是当我从数据库加载或拖放控件到表单设计器时,控件文本#set,
在覆盖Text属性并调试它之后,我看到文本设置正确,但在设置我的文本后,设计者使用controlName#设置文本,这是错误的。
如何解决这个问题?
提前致谢
哈密
答案 0 :(得分:1)
有些属性可以应用于您的属性,例如ReadOnly
,这会阻止设计师设置您的属性。
我目前无法找到该链接,但还有一种告诉表单设计者应该按特定顺序设置属性的方法。
修改强>
好吧,不是我记得的那样,但我觉得像ISupportInitialize界面那样。
类似的东西:
Public Class Test
Implements ISupportInitalise
private _numberOne as integer
private _numberTwo as integer
private _initalised as boolean
Public Property NumberOne() as Integer
Get
return _numberOne
End Get
Set(value as Integer)
if _initalised then
'perform checks here'
end if
_numberOne = value
End Set
End Property
Public Property NumberTwo() as Integer
Get
return _numberTwo
End Get
Set(value as IntegeR)
if _initalised then
'perform checks here'
end if
_numberTwo = value
End Set
End Property
Public Sub BeginInit Implements ISupportInitalise.BeginInit
_initalised = false
End Sub
Public Sub EndInit Implements ISupportInitalise.EndInit
_initalised = true
'perform all checks here'
End Sub
End Class
这样,您的所有检查都可以被禁用,直到您的对象完全初始化为止。
答案 1 :(得分:0)
您可以检查覆盖Text
setter是否设置为controlName#
,如果是,则不执行任何操作。