WPF 文本框拼写检查突出显示整个文本而不是更改单词
WPF textbox spellcheck is highlighting the whole text rather than changing the word
我的 一些 文本框有问题。我对它们启用了拼写检查,当一个单词拼写错误时,它会以红色下划线显示,右键单击会让我选择替换单词。这一切都很好,符合预期。
我遇到的问题是,当我 select 一个替换词时,我没有更正我的文本,而是整个文本块被突出显示并且该词保持不变。
我的所有文本框中都没有出现这种情况,而且奇怪的是,如果它是句子中第一个拼写错误的单词,那么拼写检查器会按预期工作并正确替换该单词。
<TextBox x:Name="TxtBugDescription" Grid.Row="3" Grid.Column="1" TextWrapping="Wrap" Padding="3" SpellCheck.IsEnabled="True" Margin="5" VerticalAlignment="Stretch" AcceptsReturn="True" />
关于如何解决这个问题有什么想法吗?
我们也遇到了这个问题!感谢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();
}
我们决定此代码的主要用例是在表单中使用 Tab 键,因此我们将其更改为仅发生在 Tab 键上,这样拼写检查仍然有效。
//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();
}
其他人可能只想删除它。
我的 一些 文本框有问题。我对它们启用了拼写检查,当一个单词拼写错误时,它会以红色下划线显示,右键单击会让我选择替换单词。这一切都很好,符合预期。
我遇到的问题是,当我 select 一个替换词时,我没有更正我的文本,而是整个文本块被突出显示并且该词保持不变。
我的所有文本框中都没有出现这种情况,而且奇怪的是,如果它是句子中第一个拼写错误的单词,那么拼写检查器会按预期工作并正确替换该单词。
<TextBox x:Name="TxtBugDescription" Grid.Row="3" Grid.Column="1" TextWrapping="Wrap" Padding="3" SpellCheck.IsEnabled="True" Margin="5" VerticalAlignment="Stretch" AcceptsReturn="True" />
关于如何解决这个问题有什么想法吗?
我们也遇到了这个问题!感谢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();
}
我们决定此代码的主要用例是在表单中使用 Tab 键,因此我们将其更改为仅发生在 Tab 键上,这样拼写检查仍然有效。
//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();
}
其他人可能只想删除它。