1
我使用“wild字符”的文本,如“@ARed text”,其中@A是红色的符号。我需要用一些函数(或类似的东西)替换@A,所以无论文本中有@A,文本字体都会变成红色。我有几种颜色(@B,@C ...),所以每个人都需要做同样的事情,只是颜色不同。动态更改标签文本的属性
因此,“@有些红色文字@有些绿色文字”会分别着上红色和绿色(在SO上找不到文字着色)。
任何想法?
谢谢。
我使用“wild字符”的文本,如“@ARed text”,其中@A是红色的符号。我需要用一些函数(或类似的东西)替换@A,所以无论文本中有@A,文本字体都会变成红色。我有几种颜色(@B,@C ...),所以每个人都需要做同样的事情,只是颜色不同。动态更改标签文本的属性
因此,“@有些红色文字@有些绿色文字”会分别着上红色和绿色(在SO上找不到文字着色)。
任何想法?
谢谢。
我会做的是捕获PreRender
事件的标签和YourLabel.Text.Substring(0, 1)
测试,如果这是符号(@),然后有条件地测试(我会使用开关)的第二个字符。然后你可以得到没有@A
的字符串的其余部分,然后设置标签的文本,并根据属性字符进行格式化。
事情是这样的:
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);
}
}
编辑:这是未经测试的代码,但你应该得到的逻辑的总体思路。
您可以通过标签创建控件并捕获渲染。在渲染你可以改变你的文字。 – Aristos