我的文本框需要计算出文本框中出现的拼写错误数量。
我的研究向我展示了如何使用
来解决拼写错误<TextBox Text="{Binding Content}" SpellCheck.IsEnabled="True" Language="en-GB" />
我有些恼火,我无法IsReadOnly
设置为真,但我想我必须忍受它。
我能找到的是如何知道文本框中有多少拼写错误/错误。我所能找到的只是http://msdn.microsoft.com/en-us/library/system.windows.controls.spellcheck%28v=vs.110%29.aspx并没有说它确实如此,但我并没有失去希望!
我尝试添加
TextBox tx = new TextBox();
tx.SpellCheck.IsEnabled = true;
tx.Text = "saf and tre";
var split = tx.Text.Split(' ');
var errors = 0;
foreach (var s in split)
{
var tempTb = new TextBox();
tempTb.Text = s;
SpellingError e = tempTb.GetSpellingError(0); // always null
var a = tempTb.GetSpellingErrorLength(0);
var b = tempTb.GetSpellingError(0);
var c = tempTb.GetSpellingErrorStart(0);
if ( tempTb.GetSpellingErrorLength(0) >= 0)
errors++;
}
如果我从
更新代码 SpellingError e = tempTb.GetSpellingError(0); // always null
到
SpellingError e = tx.GetSpellingError(0); // not null
然后它会提供建议,然后通知我它错了(我可以执行计数)。
要解决我必须做的问题
TextBox tx = new TextBox();
tx.SpellCheck.IsEnabled = true;
tx.Text = "saf many tre further more i sense taht nothing is what is";
var split = tx.Text.Split(' ');
var errors = 0;
var start = 0;
foreach (var s in split)
{
var tempTb = new TextBox();
tempTb.Text = s;
SpellingError f = tx.GetSpellingError(start);
start += s.Length + 1;
if (f!=null)
errors++;
}
为什么它不能用于tempTb?
答案 0 :(得分:2)
从调试中可以看出@EdSF是正确的,并且必须为临时SpellCheck.IsEnabled
TextBox
用于重现此代码的代码:
void initTest()
{
TextBox tx = new TextBox();
tx.SpellCheck.IsEnabled = true;
tx.Text = "saf and tre";
var split = tx.Text.Split(' ');
var errors = 0;
foreach (var s in split)
{
var tempTb = new TextBox();
tempTb.SpellCheck.IsEnabled = true; // Added this line
tempTb.Text = s;
SpellingError e = tempTb.GetSpellingError(0); // no longer always null
var a = tempTb.GetSpellingErrorLength(0);
var b = tempTb.GetSpellingError(0);
var c = tempTb.GetSpellingErrorStart(0);
//if (tempTb.GetSpellingErrorLength(0) >= 0) //doesn't appear to be correct
if (e != null)
{
errors++;
}
}
}
答案 1 :(得分:0)
我发布
后发现了它有
GetSpellingErrorStart()
GetSpellingError()
GetSpellingErrorLength()
SpellingError e = tempTb.GetSpellingError(0);
EG
TextBox tx = new TextBox();
tx.SpellCheck.IsEnabled = true;
tx.Text = "saf";
var reslt = tx.GetSpellingErrorStart(0);