我要做的是在我的winform应用程序中使用的Web浏览器控件中为每个错误的拼写标记一个虚线的红色下划线。
这是我的代码段: -
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;
}
这里InnerHTML是为输入数据获得的Web浏览器控件的InnerHTML。 下一个方法是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)
{
}
}
主要问题是上面的代码一切正常,但每当我在目标值中得到任何特殊字符或任何空格时,上面的代码也突出显示相同但我不想强调在MS Word中完成。请引导我通过这个或他们的任何其他方式。
提前致谢