我认为我在.NET中遇到过一个错误,但我想知道我做错了。
首先,我在Win Forms中创建简单的文本编辑器。我已添加了查找所需文字的功能。它可以作为我创建的无模式对话框。我希望它能像这样工作:如果找到搜索到的单词,它会选择RTB中的文本,将焦点放在它上面,然后将焦点返回到我的无模式窗口。与启用“隐藏选择”属性相关,它完美地工作,完全符合我的预期(搜索后焦点仍然在无模式窗口上,但发现RTB中仍然突出显示短语)。
稍后,我注意到AutoWordSelection属性出现了问题,它只是没有用。所以我按照here的说法做了。事实上,它有所帮助,但后来我注意到我的搜索算法不起作用(现在我需要在搜索后将重点放在RTB上,而不是将其恢复到无模式窗口)。换句话说,它就停止了工作。
我试图在我的FixedRichTextBox中添加一些代码(我刚刚在Hans建议的第一部分下添加了它):
if(base.HideSelection)
base.HideSelection=false;
base.HideSelection=false;
我也尝试过另一种方式,我的意思是:`if(!baseSelection)[...]
在这两种情况下,我都收到了关于无法创建窗口句柄的消息。因此,我必须同意只使用AutoWordSelection或HideSelection正常工作(因为如果我删除前面的部分隐瞒AutoWordSelection,上面的部分工作)。
这不是一个非常严重的问题,因为我找到了一种让它工作的方式不是我希望的那样(但它并没有限制应用程序的功能) 。然而,这个错误(如果它是一个错误)很烦人,我想知道是否有人经历过这个并找到了合适的解决方案。
让我们说@Hans Passant:D
答案 0 :(得分:0)
好。所以我似乎找到了它的答案(这很明显,因为我已经在这里发布了它)。在这种情况下,必须完全按照我在问题中链接的帖子进行操作,然后将HideSelection设置为true(在mainForm.cs中),并在公共ctor中以编程方式将其设置为false。相当愚蠢,但它现在有效(如果我默认将其设置为false,则不会这样做。)