我有“野性字符”的文字,例如“@ARed text”,其中@A表示红色。我需要用某个函数(或类似的东西)替换@A,所以无论文本中有@A,文本字体都会变成红色。我有几种颜色(@ B,@ C ......)所以对于每一种颜色我都需要做同样的事情,只是颜色不同。
所以,“@ASome red text @BSome green text”将分别为红色和绿色(在SO上找不到文字颜色)。
有什么想法吗?
感谢。
答案 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);
}
}
编辑:这是未经测试的代码,但您应该了解逻辑。