6
votes

Comment mettre en évidence ou modifier la couleur de certains mots dans une étiquette de manière dynamique au moment de l'exécution?

J'ai une étiquette contenant du texte et je tiens à mettre en évidence ou à modifier la couleur de certains mots dans le texte de l'étiquette et pas tous les mots. Il doit être dynamique. Toute suggestion?

C'est pour C # avec ASP.NET dans un contrôle utilisateur dans WebPart dans SharePoint


7 commentaires

Est-ce Winforms, ASP.NET, etc.?


En outre, cela doit-il être fait de manière dynamique? Avez-vous besoin de pouvoir varier les mots qui sont changés? Le texte change-t-il? Beaucoup de variables ici ... pourraient être plus faciles à donner quelques exemples de ce que vous recherchez.


désolé de ne pas être spécifique mais j'en ai besoin de dynamique de changer pendant l'exécution


Il vaut mieux mettre à jour la question originale au lieu d'ouvrir un nouveau: Stackoverflow.com/questions/1178249/...


Je l'ai fait mais personne n'a répondu parce que ça avait vieilli


S'il vous plaît ne postez pas de questions en double. Ces questions ont été postées à seulement sept minutes de distance.


@Ahmad - Veuillez donner aux utilisateurs une chance de répondre au lieu de commencer une nouvelle question. L'ouverture des questions en double n'est pas une bonne étiquette utilisateur, en particulier si les utilisateurs mettent le temps de donner une réponse plus complète


7 Réponses :


7
votes

pour asp.net,

enveloppez les mots que vous souhaitez surligné dans un . Puis réglez le style de couleur à la couleur de votre choix ou utilisez une classe CSS pour le faire.

Par exemple, xxx

ou xxx

EDIT:

Si vous définissez ceci Dans le code derrière, vous pouvez faire quelque chose comme le texte suivant xxx

si vous aviez besoin de correspondre déjà au texte dans l'étiquette par rapport à un texte spécifique, alors quelque chose comme le texte suivant xxx


1 commentaires

désolé de ne pas être spécifique mais j'en ai besoin de dynamique de changer pendant l'exécution



0
votes

Si c'est ASP.NET (puisque vous n'avez pas spécifié), vous vous référez à vous devez incorporer les mots que vous souhaitez mettre en surbrillance dans une autre étiquette.

    <asp:label runat="server" id="nonRed">some text 
        <asp:label runat="server" id="redText" style="color:Red">Red Text</asp:label>
   </asp:label>


2 commentaires

Étiquettes imbriquées? Est-ce que cela fonctionne? Je pense que ce n'est pas idéal, même si cela fonctionne. Imaginez le cas où ils ont comme vous l'avez, mais «Quelque texte» suivi de «Texte rouge» suivi de «Quelques texte», à la fois «Quelques texte» dans l'étiquette extérieure. Que se passe-t-il quand ils remplacent le texte de cette étiquette extérieure? Comment se réalignent-ils du "texte rouge" au bon endroit. Je ne sais pas. Me donne juste les Willies.


désolé de ne pas être spécifique mais j'en ai besoin de dynamique de changer pendant l'exécution



1
votes

Vous allez avoir besoin d'être beaucoup plus précis. Dans quelle langue est-ce? Vous construisez-vous un site Web ASP.NET avec C # Code-Derrière? Cette étiquette est-elle dans un formulaire Windows? Veuillez fournir autant de détails que vous pouvez et mettre à jour les balises sur votre message aussi.


1 commentaires

ouais c # avec asp.net dans un contrôle utilisateur dans WebPart dans SharePoint



1
votes

À partir de:

<label> She <font color="red">sea shells</font> by <font style="BACKGROUND-COLOR: yellow">the sea shore</font></label>


2 commentaires

N'a pas remarqué la balise .NET. Devrait être ASP: étiqueter plutôt une étiquette HTML droite.


désolé de ne pas être spécifique mais j'en ai besoin de dynamique de changer pendant l'exécution



10
votes

sur le côté serveur, vous pouvez simplement incorporer des HTML dans le texte de votre étiquette (VB): xxx

c'est le mécanisme de base, mais "dynamique" pourrait signifier beaucoup de choses ici . Si vous postez des détails supplémentaires sur ce que vous faites exactement, je pourrais peut-être aider plus.

Une fois de plus: Comme Rob Allen a souligné, le contrôle littéral peut être un choix légèrement meilleur dans cette Situation Depuis qu'il est destiné à émettre un HTML brut, alors que l'étiquette enveloppe le texte en une étendue afin que le tout puisse être formaté facilement.

Vérifiez ceci pour plus de détails: Stackoverflow: littéraux par rapport aux étiquettes

Pour l'enregistrement, en fonction de la situation, je pense qu'une étiquette peut aller aller ici.


1 commentaires

Cela fonctionnerait un peu mieux dans un littéral au lieu d'une étiquette et a également plus de sens sémantiquement



0
votes

Vous pouvez utiliser un Contrôle de substitution si la mise en cache est une préoccupation .

<asp:Label ID="Label1" runat="server" Text="">
    <asp:Substitution ID="Substitution1" runat="server" MethodName="GetDynamicLabel"/>
</asp:Label>

protected static string GetDynamicLabel( HttpContext context )
{
    return string.Format( "<span style='background-color:Blue;'>{0}</span> {1}", "Blue", "Not Blue" );
}


0 commentaires

2
votes

J'ai fait une fonction pour rechercher des mots dans une chaîne de texte et les mettre en surbrillance avec la couleur, le résultat est mis dans une étiquette.

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), "<span style=""background-color:Yellow;"">" & a & "</span>")
            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)


0 commentaires