2011-11-23 100 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); 
    } 
} 

編輯:這是未經測試的代碼,但你應該得到的邏輯的總體思路。