0

我开发了一个表单设计器,还开发了一些从标准控件(如按钮)继承的自定义控件。

另外,我有一些相关的属性,例如用户必须先选择部门,然后再选择人员。在用户选择人员之后,我设置了我的自定义控件的文本(在这种情况下从按钮继承)。
注意:用户可以更改 Text 属性。

一切正常,但是当我从数据库加载或将控件拖放到表单设计器时,controlName# 的文本设置,

覆盖 Text 属性并对其进行调试后,我看到文本设置正确,但在设置我的文本后,设计器使用 controlName# 设置文本,这是错误的。

如何解决这个问题?

提前感谢
哈米德

4

2 回答 2

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

这样,在您的对象完全初始化之前,您可以禁用所有检查。

于 2009-10-28T15:07:10.013 回答
0

您可以检查您的覆盖Text设置器是否已设置为controlName#,如果是,则不执行任何操作。

于 2009-10-28T15:03:19.693 回答