2009-07-24 5 views
5

मेरे पास एक लेबल है जिसमें कुछ पाठ है और मैं लेबल के पाठ में कुछ शब्दों का रंग हाइलाइट या बदलना चाहता हूं, न कि सभी शब्दों। यह गतिशील होना चाहिए। कोई सुझाव?रनटाइम पर गतिशील रूप से लेबल में कुछ शब्दों के रंग को हाइलाइट या बदलने के लिए कैसे?

यह C# SharePoint

+1

यह Winforms, asp.net, आदि है? –

+0

इसके अलावा, क्या इसे गतिशील रूप से करने की आवश्यकता है? क्या आपको बदलने वाले शब्दों को बदलने में सक्षम होना चाहिए? क्या पाठ बदलता है? यहां बहुत सारे चर ... जो आप खोज रहे हैं उसके कुछ उदाहरण देने के लिए सबसे आसान हो सकता है। – Beska

+0

विशिष्ट नहीं होने के लिए खेद है, लेकिन मुझे रनटाइम –

उत्तर

10

सर्वर साइड पर, आप सिर्फ अपने लेबल के पाठ (VB) में कुछ HTML एम्बेड कर सकते हैं। यदि आप जो भी कर रहे हैं उसके बारे में कुछ और विवरण पोस्ट करते हैं, तो मैं और अधिक मदद करने में सक्षम हो सकता हूं।

एक और विचार: रॉब एलन ने बताया कि, इस स्थिति में शाब्दिक नियंत्रण थोड़ा बेहतर विकल्प हो सकता है क्योंकि इसका कच्चा एचटीएमएल उत्सर्जित करना है, जबकि लेबल एक अवधि में पाठ को लपेटता है ताकि पूरी चीज हो सके आसानी से स्वरूपित।

अधिक जानकारी के लिए इस चेक आउट: StackOverflow: Literals versus Labels

रिकॉर्ड के लिए, स्थिति के आधार पर मुझे लगता है कि एक लेबल वास्तव में यहाँ ठीक हो सकता है।

+2

के दौरान बदलने के लिए गतिशील की आवश्यकता है यह 'लेबल' के बजाय' लिटल 'में थोड़ा बेहतर काम करेगा और अर्थात् –

+0

धन्यवाद ब्रायन के बारे में और अधिक समझ में आएगा। यह बढ़िया काम करता है। –

6

ASP.NET के लिए में webpart में एक उपयोगकर्ता नियंत्रण में ASP.NET के साथ के लिए है,

शब्द आप एक <span> में प्रकाश डाला चाहते लपेट दें। फिर <span> शैली background-color अपनी पसंद के रंग पर सेट करें, या ऐसा करने के लिए एक सीएसएस वर्ग का उपयोग करें।

उदाहरण के लिए,

<asp:Label runat="server"> 
    <span style="background-color:Blue;">Hello</span> World 
</asp:Label> 

या

<asp:Label runat="server" Text="<span style='background-color:Blue;'>Hello</span> World" /> 

संपादित करें:

के पीछे कोड में इस सेटिंग है, तो आप निम्नलिखित

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(); 
की तरह कुछ कर सकते हैं

आप पाठ पहले से ही लेबल में कुछ विशिष्ट पाठ के खिलाफ उसके बाद निम्न

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(); 
+0

विशिष्ट नहीं होने के लिए खेद है, लेकिन मुझे रनटाइम –

0

की तरह कुछ मेल करने के लिए अगर यह asp.net है (चूंकि आप निर्दिष्ट नहीं किया है) आप के लिए जा रहे है बात कर रहे हैं की जरूरत है, तो उन शब्दों को एम्बेड करने के लिए जिन्हें आप किसी अन्य लेबल में हाइलाइट करना चाहते हैं।

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

नेस्टेड लेबल के दौरान बदलने के लिए गतिशील की आवश्यकता है? क्या वह काम करता है? मुझे लगता है कि यह आदर्श नहीं है, भले ही यह काम करता हो। उस मामले की कल्पना करें जहां उनके पास आपके पास है, लेकिन "कुछ पाठ" के बाद "लाल पाठ" के बाद "कुछ पाठ", बाहरी लेबल में "कुछ पाठ" दोनों होते हैं। क्या होता है जब वे उस बाहरी लेबल के लिए टेक्स्ट को प्रतिस्थापित करते हैं? वे सही जगह पर "लाल पाठ" कैसे रीयलिन करते हैं। मुझे नही पता। बस मुझे इच्छाओं देता है। – Beska

+0

विशिष्ट नहीं होने के लिए खेद है, लेकिन मुझे रनटाइम –

+0

के दौरान बदलने के लिए गतिशील की आवश्यकता है, यह ठीक काम करता है, यह केवल एक उदाहरण था कि इसे कैसे किया जाए। शेयरपॉइंट – kemiller2002

1

आपको बहुत अधिक विशिष्ट होने की आवश्यकता होगी। इसमें कौन सी भाषा है? क्या आप सी # कोड-पीछे के साथ एएसपी.NET वेबसाइट बना रहे हैं? क्या यह लेबल विंडोज फॉर्म में है? कृपया जितना संभव हो उतना विस्तार प्रदान करें, और अपनी पोस्ट पर टैग अपडेट करें।

+0

हाँ सी # .net टैग को नोटिस नहीं किया। एएसपी होना चाहिए: लेबल के बजाय सीधे HTML लेबल। –

1

के साथ शुरू:

<label> She sells sea shells by the sea shore </label> 

हम चाहते हैं "समुद्र बेचता है" लाल होना करने के लिए, और "समुद्र तट" पर प्रकाश डाला जा सकता है।

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

सब कुछ किया गया!

myLabel.Text="Some normal text <span style='color: red;'>some red text</span>" 

बुनियादी तंत्र है, लेकिन 'गतिशील' यह यहाँ बहुत कुछ मतलब हो सकता है:

+0

में वेबपार्ट में उपयोगकर्ता नियंत्रण में ASP.NET के साथ –

+0

विशिष्ट नहीं होने के लिए खेद है, लेकिन मुझे रनटाइम –

0

यदि कैशिंग एक चिंता है तो आप Substitution control का उपयोग कर सकते हैं।

<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"); 
} 
1

मैंने टेक्स्ट स्ट्रिंग में शब्दों को देखने और उन्हें रंग के साथ हाइलाइट करने के लिए एक फ़ंक्शन बनाया है, परिणाम एक लेबल में डाल दिया गया है।

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) 
संबंधित मुद्दे