Windows 8.1应用程序 - 基于RichEditBox基线的超级下标

时间:2017-03-14 14:13:18

标签: c# windows-8.1 rtf subscript richeditbox

我有一个用于文本格式化的面板,我必须得到子和上标,但是不能通过将\ sub或\ super插入RTF来完成(RTF是什么我到底需要)。 这是我通过插入\ sub:

设置上标的方法
public void SetSuperscript()
{
    ITextSelection selectedText = _textbox.Document.Selection;
    if (selectedText != null)
    {
        ITextCharacterFormat charFormatting = selectedText.CharacterFormat;
        charFormatting.Superscript= FormatEffect.On;
        selectedText.CharacterFormat = charFormatting;
    }
}

现在我知道我也可以这样做:

public void SetSuperscript()
{
    ITextSelection selectedText = _textbox.Document.Selection;
    if (selectedText != null)
    {
        ITextCharacterFormat charFormatting = selectedText.CharacterFormat;
        charFormatting.Size /= 2;
        charFormatting.Position = charFormatting.Size;
        selectedText.CharacterFormat = charFormatting;
    }
}

它的效果一样好。问题在于创建下标:

public void SetSubscript()
{
    ITextSelection selectedText = _textbox.Document.Selection;
    if (selectedText != null)
    {
        ITextCharacterFormat charFormatting = selectedText.CharacterFormat;
        charFormatting.Size /= 2;
        charFormatting.Position = -charFormatting.Size;
        selectedText.CharacterFormat = charFormatting;
    }
}

以上代码抛出异常"值不在预期范围内。"它是由这条线引起的: charFormatting.Position = -charFormatting.Size; 我在那里指定一个负值(根据文档,这是正常的),因为我需要选择的文本低于普通文本一半的高度。我做错了什么?

丹尼尔

0 个答案:

没有答案