动态更改Label文本的属性

时间:2011-11-23 01:58:04

标签: c# asp.net

我有“野性字符”的文字,例如“@ARed text”,其中@A表示红色。我需要用某个函数(或类似的东西)替换@A,所以无论文本中有@A,文本字体都会变成红色。我有几种颜色(@ B,@ C ......)所以对于每一种颜色我都需要做同样的事情,只是颜色不同。

所以,“@ASome red text @BSome green text”将分别为红色和绿色(在SO上找不到文字颜色)。

有什么想法吗?

感谢。

1 个答案:

答案 0 :(得分:2)

我要做的是捕获标签的PreRender事件并测试YourLabel.Text.Substring(0, 1),如果那是at符号(@),那么有条件地测试(我使用开关)第二个角色。然后,您可以在不使用@A的情况下获取字符串的其余部分,然后设置Label的文本,并根据属性字符进行格式化。

这样的事情:

protected void YourLabel_PreRender(object sender, EventArgs e)
{
    string LabelText = YourLabel.Text;
    bool NewForeColor = false;

    if (LabelText.Left(0, 1) == "@")
    {
        switch(LabelText.Substring(1, 1))
        {
            case "A":
                YourLabel.ForeColor = System.Drawing.Color.Magenta;
                NewForeColor = true;
                break;
            case "B":
                // you get the idea
                break;
        }
        if (NewForeColor)
            YourLabel.Text = LabelText.Substring(2, LabelText.Length - 2);
    }
}

编辑:这是未经测试的代码,但您应该了解逻辑。