RichEditBox:使用CTRL + I设置斜体文本删除文本

时间:2014-01-18 11:32:22

标签: c# windows-store-apps richtextbox rtf

我有以下代码在RichEditBox中加粗和斜体显示文本:

private async void Page_KeyDown(object sender, KeyRoutedEventArgs e)
{
    var state = Window.Current.CoreWindow.GetKeyState(Windows.System.VirtualKey.Control);
    if ((state & CoreVirtualKeyStates.Down) == CoreVirtualKeyStates.Down)
    {
        switch (e.Key)
        {
            case Windows.System.VirtualKey.B:
                await BoldText();
                break;
            case Windows.System.VirtualKey.I:
                await ItaliciseText();
                break;
        }
    }
}

private async Task BoldText()
{
    ITextSelection selectedText = editor.Document.Selection;
    if (selectedText != null)
    {
        ITextCharacterFormat charFormatting = selectedText.CharacterFormat;
        charFormatting.Bold = FormatEffect.Toggle;
        selectedText.CharacterFormat = charFormatting;
    }
}

private async Task ItaliciseText()
{
    ITextSelection selectedText = editor.Document.Selection;
    if (selectedText != null)
    {
        ITextCharacterFormat charFormatting = selectedText.CharacterFormat;
        charFormatting.Italic = FormatEffect.Toggle;
        selectedText.CharacterFormat = charFormatting;
    }
}

BoldText()ItaliciseText()也会从工具栏上的按钮调用。

按下Bold时,所选文本将正确格式化为粗体文本。

按下CTRL+B时,所选文本将正确格式化为粗体文本。

按下Italic时,所选文本将格式化为斜体文本

按下CTRL+I后,所选文字格式化为斜体文字,但随后删除

我知道格式化正在发生,因为如果按CTRL + Z,文本将以斜体显​​示。 CTRL + I在selectedText.CharacterFormat = charFormatting;擦除文本后导致其他操作。

我无法弄清楚为什么会发生这种情况,因为代码与完美无瑕的BoldText()代码完全相同,而且当从工具栏上的按钮触发时,这些代码和文字完全相同。

任何想法?

2 个答案:

答案 0 :(得分:2)

Ctrl+I可能有另一个处理程序(可能是导致文本被删除的处理程序),考虑设置KeyRoutedEventArgs.Handled = true;,请参阅this,(在本例中为e.Handled=true;)你不希望这个KeyEvent被处理在你以外的地方。

答案 1 :(得分:-1)

为什么你不使用,它是一个很好的工具,可以轻松下载 http://www.textcontrol.com/en_US/sites/introduction/?gclid=CPTaj_LQh7wCFcJd3godZA4AZg

相关问题