【问题标题】:WPF textbox spellcheck is highlighting the whole text rather than changing the wordWPF 文本框拼写检查突出显示整个文本而不是更改单词
【发布时间】:2015-07-05 21:40:37
【问题描述】:

我的 一些 文本框有问题。我已经对它们启用了拼写检查,当一个单词拼写错误时,它会被红色下划线,右键单击会给我一个替换单词的选择。这一切都很好,符合预期。

我遇到的问题是,当我选择一个替换词时,不是更正我的文本,而是整个文本块都被突出显示,而该词保持不变。

这并没有出现在我的所有文本框中,而且奇怪的是,如果它是句子中拼写错误的第一个单词,那么拼写检查器会按预期工作并正确替换该单词。

<TextBox x:Name="TxtBugDescription" Grid.Row="3" Grid.Column="1" TextWrapping="Wrap" Padding="3" SpellCheck.IsEnabled="True" Margin="5" VerticalAlignment="Stretch" AcceptsReturn="True" />

关于如何解决这个问题的任何想法?

【问题讨论】:

  • 你在使用任何样式吗?因为我无法重现您的场景。
  • 除了上面我还有一个资源文件设置边距和垂直对齐。
  • 我认为这证实了我担心地球上没有其他人有这个问题

标签: wpf xaml visual-studio-2013 spell-checking


【解决方案1】:

我们也遇到了这个问题!感谢Spellcheck only replaces first word in TextBox,我们终于弄明白了。

我们在 App.xaml.cs 中有这段代码,当它获得焦点时,它会突出显示(选择)文本框中的所有文本。这似乎是让拼写检查器失望的原因。

//In the App.xaml.cs file
EventManager.RegisterClassHandler(typeof(TextBox), UIElement.GotKeyboardFocusEvent, 
    new RoutedEventHandler(SelectAllText));

private static void SelectAllText(object sender, RoutedEventArgs e)
    {
        var tb = (sender as TextBox);
        if (tb != null)
            tb.SelectAll();
    }

我们决定此代码的主要用例是在表单中切换时,因此我们将其更改为仅在允许拼写检查仍然有效的选项卡上发生。

//Changed the method to only set focus when the tab was pressed
private static void SelectAllText(object sender, RoutedEventArgs e)
{
    if (e.RoutedEvent == Keyboard.GotKeyboardFocusEvent)
    {
        if (!Keyboard.IsKeyDown(Key.Tab))
            return;
    }
    var tb = (sender as TextBox);
    if (tb != null)
        tb.SelectAll();
}

其他人可能只想删除它。

【讨论】:

  • 这几个月来一直困扰着我。问题解决了:)
猜你喜欢
  • 2011-02-02
  • 2023-01-08
  • 1970-01-01
  • 2010-09-29
  • 2012-06-06
  • 1970-01-01
  • 1970-01-01
  • 2018-03-22
  • 1970-01-01
相关资源
最近更新 更多