Winforms:RichTextBox -> AutoWordSelection/Hide 选择错误

Win Forms: RichText Box -> AutoWordSelection/Hide Selection bug

我想我在 .NET 中遇到了一个错误,但我想知道这是否是我的错误。

首先,我正在 Win Forms 中创建简单的文本编辑器。我添加了查找所需文本的功能。它用作我创建的无模式对话框。我希望它像这样工作:如果找到搜索到的词,它会选择 RTB 中的文本,将焦点放在它上面,然后将焦点放回我的无模式 window。在启用隐藏选择 属性 方面,它完美地工作,正如我想要的那样(搜索后焦点仍然在无模式 window 上,但发现的短语在 RTB 中仍然突出显示)。

后来,我注意到 AutoWordSelection 属性 出了点问题,就是没用。所以我按照说的做了 here。确实,它有所帮助,但后来我注意到我的搜索算法不起作用(现在我需要在搜索后将重点放在 RTB 上,而不是将其返回到无模式 window)。换句话说,它刚刚停止工作。

我试图在我的 FixedRichTextBox 中添加一些代码(我只是在 Hans 建议的第一部分下添加了它):

if(base.HideSelection)
    base.HideSelection=false;
base.HideSelection=false;

我也尝试过另一种方式,我的意思是:`if(!baseSelection) [...]

在这两种情况下,我都收到有关无法创建 window 句柄的消息。因此,我将不得不同意仅在 AutoWordSelection 或 HideSelection 正常工作的情况下生活(因为如果我删除有关 AutoWordSelection 的早期部分,则上述部分正在工作)。

这不是一个非常严重的问题,因为我已经找到了一种方法来让它工作得有点不像我想要的那样(但它不限制应用程序的功能)。然而,这个错误(如果它是一个错误)很烦人,我想知道是否有人遇到过这个问题并找到了合适的解决方案。

假设@Hans Passant :D

好的。所以看起来我已经找到了答案(这很明显,因为我已经 post 在这里编辑了它)。在这种情况下,有必要完全按照我在问题中链接的 post 进行操作,然后将 HideSelection 设置为 true(在 mainForm.cs 中),并在 [=14] 中以编程方式将其设置为 false =] 构造函数。非常愚蠢,但现在可以使用(如果我默认将其设置为 false,则不会)。