gpt4 book ai didi

c# - 单词拼写检查弹出隐藏和 "freezes"我的应用程序

转载 作者:行者123 更新时间:2023-11-30 14:04:15 24 4
gpt4 key购买 nike

我在我的内部 WinForm 应用程序中使用 Word 的拼写检查。我的客户都是装有 Office 2007 的 XP 机器,拼写检查建议框在应用程序后面随机弹出,使所有内容“看起来”都卡住了,因为您无法访问它。

建议?其他人如何解决或完全阻止它?

谢谢

下面是我的代码,供引用。

public class SpellCheckers
{
public string CheckSpelling(string text)
{
Word.Application app = new Word.Application();
object nullobj = Missing.Value;
object template = Missing.Value;
object newTemplate = Missing.Value;
object documentType = Missing.Value;
object visible = false;
object optional = Missing.Value;
object savechanges = false;
app.ShowMe();

Word._Document doc = app.Documents.Add(ref template, ref newTemplate, ref documentType, ref visible);

doc.Words.First.InsertBefore(text);
Word.ProofreadingErrors errors = doc.SpellingErrors;

var ecount = errors.Count;
doc.CheckSpelling(ref optional, ref optional, ref optional, ref optional,
ref optional, ref optional, ref optional, ref optional, ref optional,
ref optional, ref optional, ref optional);
object first = 0;
object last = doc.Characters.Count - 1;
var results = doc.Range(ref first, ref last).Text;
doc.Close(ref savechanges, ref nullobj, ref nullobj);
app.Quit(ref savechanges, ref nullobj, ref nullobj);

Marshal.ReleaseComObject(doc);
Marshal.ReleaseComObject(app);
Marshal.ReleaseComObject(errors);

return results;
}
}

我从我的 WinForm 应用程序中调用它 -->

  public static void SpellCheckControl(Control control)
{
if (IsWord2007Available())
{
if (control.HasChildren)
{
foreach (Control ctrl in control.Controls)
{
SpellCheckControl(ctrl);
}
}

if (IsValidSpellCheckControl(control))
{
if (control.Text != String.Empty)
{
control.BackColor = Color.FromArgb(180, 215, 195);
control.Text = Spelling.CheckSpelling(control.Text);
control.Text = control.Text.Replace("\r", "\r\n");
control.ResetBackColor();
}
}
}
}

最佳答案

我知道这是从 2010 年开始的,但花了一整天时间才弄清楚拼写检查器弹出窗口依赖于两个类(在您编写所有逻辑之前)。

这是您的 Word 应用程序和 Word 文档的定义。

Word.Application app = new Word.Application();

需要:

Word._Application app = new Word.Application();

并且文档(在原始问题中是正确的)需要

Word._Document doc = app.Documents.Add([Missing.Value passes]);

如果您使用无下划线的类,您将不会收到任何错误,但拼写检查器要么会被“困”在隐藏词应用程序中,在等待用户输入时锁定您的应用程序,要么会在您的应用程序后面弹出,如果您使用的是全屏锁定应用程序,那么结果和我们使用我们的内部软件一样糟糕。

希望这对您有所帮助!

关于c# - 单词拼写检查弹出隐藏和 "freezes"我的应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2382454/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com