如何在运行时动态突出显示或更改标签中某些单词的颜色?

Ahm*_*rid 6 .net c# asp.net

我有一个包含一些文字的标签,我想要突出显示或更改标签文本中某些单词的颜色,而不是所有单词.它必须是动态的.有什么建议?

它适用于带有ASP.NET的c#,位于sharepoint中的webpart中的用户控件中

Bri*_*Kay 10

在服务器端,您可以在Label的文本(VB)中嵌入一些Html:

myLabel.Text="Some normal text <span style='color: red;'>some red text</span>"
Run Code Online (Sandbox Code Playgroud)

这是基本机制,但"动态"可能意味着很多事情.如果你发布一些关于你正在做什么的更多细节,我可能会提供更多帮助.

还有一个想法:正如Rob Allen指出的那样,Literal控件在这种情况下可能是一个稍微好一点的选择,因为它打算发出原始的Html,而Label将文本包装在一个范围内,这样整个事情就可以很容易地格式化了.

查看更多详细信息:StackOverflow:文字与标签

为了记录,根据情况,我认为标签实际上可能在这里没问题.

  • 这在`Literal`而不是`Label`中会更好一些,并且在语义上也更有意义 (2认同)

Rus*_*Cam 7

对于ASP.NET,

在a中包含你想要突出显示的单词<span>.然后将<span>样式设置background-color为您选择的颜色,或使用CSS类来执行此操作.

例如,

<asp:Label runat="server">
    <span style="background-color:Blue;">Hello</span> World
</asp:Label>
Run Code Online (Sandbox Code Playgroud)

要么

<asp:Label runat="server" Text="<span style='background-color:Blue;'>Hello</span> World" />
Run Code Online (Sandbox Code Playgroud)

编辑:

如果在代码中设置此项,则可以执行以下操作

 StringBuilder builder = new StringBuilder();
 builder.Append([start of text]);
 builder.Append("<span style=\"background-color:Blue;\">");
 builder.Append([text to highlight]);
 builder.Append("</span>");
 builder.Append([rest of text]);

 Label.Text = builder.ToString();
Run Code Online (Sandbox Code Playgroud)

如果您需要将标签中已有的文本与某些特定文本进行匹配,则需要执行以下操作

 string theTextToMatch = "[Text to match]";
 string theText = Label.Text;

 int leftIndex = theText.IndexOf(theTextToMatch, StringComparison.OrdinalIgnoreCase);
 int rightIndex = leftIndex + theTextToMatch.Trim().Length;

 StringBuilder builder = new StringBuilder();
 builder.Append(theText , 0, leftIndex);
 builder.Append("<span style=\"background-color:Blue;\">");
 builder.Append(theText, leftIndex, rightIndex - leftIndex);
 builder.Append("</span>");
 builder.Append(theText, rightIndex, theText.Length - rightIndex);

 Label.Text = builder.ToString();
Run Code Online (Sandbox Code Playgroud)