我在将WPF RichTextBox
到BaselineAlignment.Superscript
中的文本格式方面遇到问题。
我有此代码:
private void TextBox_OnPreviewKeyDown(object sender,KeyEventArgs e)
{
var textBox = (RichTextBox) sender;
if ((Keyboard.Modifiers & ModifierKeys.Control) == ModifierKeys.Control)
{
if (e.Key == Key.OemPlus && (Keyboard.Modifiers & ModifierKeys.Shift) == ModifierKeys.Shift)
{
ChangeTextAlignment(textBox,BaselineAlignment.Superscript,BaselineAlignment.Subscript);
e.Handled = true;
}
else if (e.Key == Key.OemPlus && (Keyboard.Modifiers & ModifierKeys.Shift) != ModifierKeys.Shift)
{
ChangeTextAlignment(textBox,BaselineAlignment.Subscript,BaselineAlignment.Superscript);
e.Handled = true;
}
}
}
ChangeTextAlignment
具有下一个签名:
void ChangeTextAlignment(RichTextBox richTextBox,BaselineAlignment changeTo,BaselineAlignment possibleCurrent)
因此,当我尝试对文本应用Subscript
时,效果很好,但是当我尝试对文本应用上标对齐方式时,我将在按下命令按钮后键入文字,但只有在在我为ChangeTextAlignment
调用Superscript
函数的地方或ChangeTextAlignment
函数内部的某个地方。
接下来看:
我按Ctrl + Shift + Key.OemPlus
时没有在代码中设置断点,随后输入的文字也没有任何作用。
我设置了一个断点,然后按Ctrl + Shift + Key.OemPlus
,它在我的断点处停止,我按F5
继续,瞧,我输入的新文本被格式化为上标。
同时,如果我在RichTextBox
中选择了一些文本,然后按Ctrl + Shift + Key.OemPlus
而没有断点,那么它将起作用!
所以问题是:
为什么上标格式不适用于新文本,尽管适用于所选文本?