2011-11-23 48 views
1

我使用“wild字符”的文本,如“@ARed text”,其中@A是红色的符号。我需要用一些函数(或类似的东西)替换@A,所以无论文本中有@A,文本字体都会变成红色。我有几种颜色(@B,@C ...),所以每个人都需要做同样的事情,只是颜色不同。动态更改标签文本的属性

因此,“@有些红色文字@有些绿色文字”会分别着上红色和绿色(在SO上找不到文字着色)。

任何想法?

谢谢。

+1

您可以通过标签创建控件并捕获渲染。在渲染你可以改变你的文字。 – Aristos

回答

2

我会做的是捕获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); 
    } 
} 

编辑:这是未经测试的代码,但你应该得到的逻辑的总体思路。