我正在学web自下定义控件,想写一个简单的继承自label的自定义控件,为它添加一个属性Color,可以通过对color属性赋值来设置label的颜色,请问怎么才能把color指定给text啊?我是这么做的:
   Inherits System.Web.UI.WebControls.Label    Dim _text As String    <Bindable(True), Category("Appearance"), DefaultValue("")> Overrides Property [Text]() As String
        Get
            Return _text
        End Get        Set(ByVal Value As String)
            <font color=red>_text = "<font style=color:" & strColor & ";font-weight:bolder>" & Value & "</font>"</font>
        End Set
    End Property    Private strColor As String
    Public Property Color() As String
        Get
            Return strColor
        End Get
        Set(ByVal Value As String)
            strColor = Value
        End Set
    End Property    Protected Overrides Sub Render(ByVal output As System.Web.UI.HtmlTextWriter)
        output.Write([Text])
    End Sub    Public Overrides Property ForeColor() As System.Drawing.Color
        Get        End Get
        Set(ByVal Value As System.Drawing.Color)        End Set
    End Property
效果是达到了,但它的text值总是 <font style=color:green;font-weight:bolder>rrrrrrrrrr</font> 这样的,而不是仅仅是rrrrrrrrrr,请问我应该怎么写?

解决方案 »

  1.   

    Set(ByVal Value As String)
                <font color=red>_text = "<font style=color:" & strColor & ";font-weight:bolder>" & Value & "</font>"</font>
            End Set其实应该是:
           Set(ByVal Value As String)
                _text = "<font style=color:" & strColor & ";font-weight:bolder>" & Value & "</font>"
            End Set我本来是想加颜色的:(
      

  2.   

    Protected Overrides Sub Render(ByVal output As System.Web.UI.HtmlTextWriter)
            output.Write(Text)
            
        End Sub
      

  3.   

    render()方法是有,但怎么把Color赋给text呢?(不是那个ForeColor)
      

  4.   

    你自己都已经写了:
    _text = "<font style=color:" & strColor & ";font-weight:bolder>" & Value & "</font>"那么Text属性Get的时候回去的就是_text,当然就是这样啦,否则你就改写Get咯。其实我看你的目的,正确的写法是_text就保存用户Set的Text属性,不要做任何修改,然后Render这样写:
    output.Write("<font style=color:" & strColor & ";font-weight:bolder>" & _text & "</font>")
      

  5.   

    Render这样写:
    output.Write("<font style=color:" & strColor & ";font-weight:bolder>" & _text & "</font>")
    这样写也有一个问题,就是label其它的属性就不起作用了,如字体等,怎么让其它属性也起作用呢?谢谢。