我有一个包含一些文字的标签,我想要突出显示或更改标签文本中某些单词的颜色,而不是所有单词.它必须是动态的.有什么建议?
它适用于带有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:文字与标签
为了记录,根据情况,我认为标签实际上可能在这里没问题.
对于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)