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

另外,我有一些相关的属性,例如用户必须首先选择部门,然后选择人员。在用户选择人员后,我设置自定义控件的文本(在本例中继承自按钮)。
笔记:用户可以更改文本属性。

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

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

如何解决这个问题?

提前致谢
哈米德

有帮助吗?

解决方案

您可以将一些属性应用于您的属性,例如 ReadOnly 这也会阻止设计师设置你的财产。

我目前找不到链接,但还有一种方法可以告诉表单设计器应该按特定顺序设置属性。


编辑:

好吧,不太像我记忆中的样子,但我认为类似 ISupport初始化 界面。

就像是:

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

这样,您的所有检查都可以被禁用,直到您的对象完全初始化为止。

其他提示

你可以检查你的覆盖 Text setter 是否被设置为 controlName# 如果是,则什么都不做。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top