none
继续的TextBox设计时为什么不正常? RRS feed

  • 问题

  • 我自定义了一个控件,由TextBox继承,其中,Text属性在将该控件添加到窗体时,不能立即显示,为什么?

    Public Class BhTextBox
        Inherits TextBox
        Private Const PROMPT As String = "编号/名称[+规格]"
        Public Sub New()
            MyBase.New()
            Me.Font = New Font("宋体", 9, FontStyle.Italic)
            Me.Text = PROMPT
            Me.Anchor = AnchorStyles.Top Or AnchorStyles.Left Or AnchorStyles.Right
        End Sub

        Private Sub BhTextBox_Enter(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Enter
            If Me.Text = PROMPT Then
                Me.Font = New Font("宋体", 9)
                Me.Text = ""
            End If
        End Sub

        Private Sub BhTextBox_Leave(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Leave
            If Trim(Me.Text) = "" Then
                Me.Font = New Font("宋体", 9, FontStyle.Italic)
                Me.Text = PROMPT
            End If
        End Sub

    End Class


    韩立学
    2011年3月30日 3:12

答案

  • 你可以看看窗体的顺序,首先,执行构造函数,创建对象,然后对对象的属性赋值,所以,你这个写在构造函数中的赋值,编译器自动回覆盖成默认的。你可以写在OnInitialize方法重载中,或是写在OnParentChange重载中实现。前者好一些。
    2011 c# mvp China. *George读起来像不像“饺子”?我爱吃饺子,我叫George。
    • 已标记为答案 大海怪 2011年3月30日 9:04
    2011年3月30日 4:07