2012-08-01 10 views
5

Was ich versuche zu tun ist eine gepunktete rote Unterstreichung zu jeder falschen Schreibweise im Webbrowser-Steuerelement, die ich in meiner Winform-Anwendung verwendet haben, zu markieren.Hervorhebung falscher Rechtschreibung im Webbrowser Steuerelement

Hier ist mein Code-Schnipsel: -

public static string CheckSpelling(string InnerHTML) 
    { 
     string Val = ""; 
     try 
     { 
      StringBuilder strBu = new StringBuilder(); 
      strBu.Append(InnerHTML); 
      RemoveStyleAssigned(ref strBu);        
      for (int i = 0; i < strBu.Length; i++) 
      { 
       if (Convert.ToString(strBu[i]).ToLower() == "<") 
       { 
        for (int j = i + 1; j < strBu.Length; j++) 
        {        
         if (Convert.ToString(strBu[j]).ToLower() == ">") 
         { 
          i = j; 
          for (int k = j + 1; k < strBu.Length; k++) 
          { 
           if (Convert.ToString(strBu[k]).ToLower() != " ") 
           { 
            i = k; 
            CheckAndReplace(ref strBu, ref i); 
            break; 
           } 
          } 
          break; 
         } 
        } 
       } 
       else if (Convert.ToString(strBu[i]).ToLower() != " ") 
       { 
        CheckAndReplace(ref strBu, ref i);       
       } 
      } 
      Val = strBu.ToString(); 
     } 
     catch (Exception ex) 
     { 
     } 
     return Val; 
    } 

Hier Innerhtml ist die Innerhtml des Steuer Web-Browser für die eingegebenen Daten erhalten. Die nächste Methode ist CheckandReplace

private static void CheckAndReplace(ref StringBuilder strBu, ref int i) 
    {    
     try 
     { 
      string Target = string.Empty; 
      string NewString = "";     
      for (int j = i; j <= strBu.Length; j++) 
      {     
       if (j == strBu.Length || Convert.ToString(strBu[j]).ToLower() == " " || Convert.ToString(strBu[j]).ToLower() == "<") 
       { 
        string Wordtocheck = ReplaceXmlCharacters(Target); 
        if (!IsSpellingCorrect(Wordtocheck)) 
        { 
         NewString = "<u style='text-decoration: none; border-bottom: 1px dotted #FF0000'>" + Target + "</u>";       
         strBu = strBu.Replace(Target, NewString, i, Target.Length);        
         i += NewString.Length - 1; 
        } 
        else 
        { 
         i = j - 1; 
        } 

        break; 
       } 
       else 
        Target += strBu[j]; 
      } 
     } 
     catch (Exception ex) 
     { 
     } 
    } 

Das Hauptproblem ist, dass alles funktioniert mit dem obigen Code in Ordnung, aber wenn ich keine Sonderzeichen oder einen Raum in dem Zielwert zu erhalten, der obige Code auch die gleichen, aber ich hervorheben möchte das nicht so hervorheben wie in MS Word. Bitte führe mich durch das oder ist ihr anderer Weg raus.

Vielen Dank im Voraus

Antwort

0

Sie können check out Regex wollen. Scheint so, als würde es mit dem helfen, was du erreichen willst.

+0

danke für die Antwort, aber Regex wird nicht funktionieren, denn wenn Sie auf das innere HTML schauen, konvertiert es jedes öffnende Tag in den Daten, die sowohl Alphabet als auch Zeichen enthalten .. –

Verwandte Themen