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

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

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

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

myLabel.Text="Some normal text some red text" 

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

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

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

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

对于ASP.NET,

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

例如,

  Hello World  

要么

  

编辑:

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

  StringBuilder builder = new StringBuilder(); builder.Append([start of text]); builder.Append(""); builder.Append([text to highlight]); builder.Append(""); builder.Append([rest of text]); Label.Text = builder.ToString(); 

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

  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(""); builder.Append(theText, leftIndex, rightIndex - leftIndex); builder.Append(""); builder.Append(theText, rightIndex, theText.Length - rightIndex); Label.Text = builder.ToString(); 

我创建了一个函数来查找文本字符串中的单词并用颜色突出显示它们,结果放入标签中。

 Function Remarcar(ByVal palabra As String, ByVal texto As String) As String Dim textoNuevo As String = String.Empty If Not String.IsNullOrEmpty(palabra) Then Dim split As String() = texto.Split(New Char() {" "c}) For Each str As String In split If str.ToLower.Contains(palabra.ToLower) Then Dim a As String = String.Empty Dim b As Int32 For i = 0 To str.Length If str.ToLower.Substring(i, palabra.Length) = palabra.ToLower Then a = str.Substring(i, palabra.Length) b = i Exit For End If Next textoNuevo &= str & " " textoNuevo = textoNuevo.Replace(str.Substring(b, palabra.Length), "" & a & "") Else textoNuevo &= str & " " End If Next Else textoNuevo = texto End If Return textoNuevo End Function Dim texto As String = "I made a function to look up words in a text string and highlight them with color, the result is put into a label." Label1.Text = Remarcar("highlight", texto) 

你需要更加具体。 这是什么语言? 您是否正在使用C#代码隐藏构建ASP.NET网站? 此标签是否为Windows窗体? 请提供尽可能详细的信息,并更新post上的标签。

从…开始:

  

我们希望“卖海”是红色,并且要突出“海岸”。

  

全部完成!

如果它是asp.net(因为你没有指定),你指的是你必须在另一个标签中嵌入你想要突出显示的单词。

  some text Red Text  

如果需要缓存,则可以使用Substitution控件 。

    protected static string GetDynamicLabel( HttpContext context ) { return string.Format( "{0} {1}", "Blue", "Not Blue" ); }