2016-12-02 5 views
-1

Verwenden eines Webbrowser-Steuerelements. Ich möchte die Anzahl der Zeichen in Webbrowser zählen, genau wie textchange der Klasse Textbox. Ich möchte nur die Anzahl der Zeichen im Text zählen, die WebBrowser keine HTML, keine Bilder, etc.Any Idee, wie das Verhalten der Textbox zu simulieren, die ausgelöst, wenn Änderung Text angezeigt wird? DankeWie zähle ich die Anzahl der Zeichen in der C# -Webbrowsersteuerung?

Ich entwickle Winforms in C#. Kein ASP.NET.

+1

ein WebBrowser-Steuerelement zeigt viel mehr als Text hilft. Zum Beispiel enthält es Bilder. Möchten Sie nur die Anzahl der Zeichen in dem angezeigten Text zählen? Oder möchten Sie die Anzahl der Zeichen in der HTML-Quelldatei zählen? Sie verweisen auch auf das TextChanged-Ereignis für eine TextBox, die ausgelöst wird, wenn sich der in der Textbox angezeigte Text ändert ... das entsprechende Ereignis für einen WebBrowser wäre etwas wie Navigiert. Ihre Frage braucht viel mehr Details. –

+0

Sprechen Sie über das Zählen der Zeichen des HTML-Dokuments? –

+0

Bitte klären Sie Ihre Absicht, damit wir Ihre Frage beantworten können. –

Antwort

1

die folgende Klasse hinzufügen:

using System.Text.RegularExpressions; 

Namespace CK.TicketSystem.Shared { public static Klasse HtmlUtils { public static bool IsHtmlFragment (string value) { return Regex.IsMatch (Wert, @ ""); }

/// <summary> 
    /// Remove tags from a html string 
    /// </summary> 
    /// <param name="value"></param> 
    /// <returns></returns> 
    public static string RemoveTags(string value) 
    { 
     if (value != null) 
     { 
      value = CleanHtmlComments(value); 
      value = CleanHtmlBehaviour(value); 
      value = Regex.Replace(value, @"</[^>]+?>", " "); 
      value = Regex.Replace(value, @"<[^>]+?>", ""); 
      value = value.Trim(); 
     } 
     return value; 
    } 

    /// <summary> 
    /// Clean script and styles html tags and content 
    /// </summary> 
    /// <returns></returns> 
    public static string CleanHtmlBehaviour(string value) 
    { 
     value = Regex.Replace(value, "(<style.+?</style>)|(<script.+?</script>)", "", RegexOptions.IgnoreCase | RegexOptions.Singleline); 

     return value; 
    } 

    /// <summary> 
    /// Replace the html commens (also html ifs of msword). 
    /// </summary> 
    public static string CleanHtmlComments(string value) 
    { 
     //Remove disallowed html tags. 
     value = Regex.Replace(value, "<!--.+?-->", "", RegexOptions.IgnoreCase | RegexOptions.Singleline); 

     return value; 
    } 

    /// <summary> 
    /// Adds rel=nofollow to html anchors 
    /// </summary> 
    public static string HtmlLinkAddNoFollow(string value) 
    { 
     return Regex.Replace(value, "<a[^>]+href=\"?'?(?!#[\\w-]+)([^'\">]+)\"?'?[^>]*>(.*?)</a>", "<a href=\"$1\" rel=\"nofollow\" target=\"_blank\">$2</a>", RegexOptions.IgnoreCase | RegexOptions.Compiled); 
    } 
} 

}

Ich muss sagen, dass ich diese Klasse in ein paar wirklich gute Entwickler Blog gefunden, aber leider kann ich mich nicht erinnern, wo ich es tat finden.

Dann tun Sie:

var str = HtmlUtils.RemoveTags(yourHtmlString); 
var numberOfCharacters = str.Length; 

Hoffe, es

+0

Perfekt. Vielen Dank! –

Verwandte Themen