WPF应用 - 实现可上下标的文本框

本文探讨了在WPF应用中使用System.Windows.Controls.RichTextBox时遇到的上下标信息丢失问题,包括保存rtf格式和复制到Word时的信息丢失。通过尝试不同方法,发现设置上下标的不同方式可以解决部分问题。然而,右键复制粘贴到Word仍存在错误。另一种解决方案是使用System.Windows.Forms.RichTextBox,该控件在设置上下标、保存rtf及Copy To Word时表现良好。
摘要由CSDN通过智能技术生成

System.Windows.Controls.RichTextBox

首先考虑使用这个控件

上下标设置

var textrange = new TextRange(rtb.Selection.Start, rtb.Selection.End);
textrange.ApplyPropertyValue(Run.BaselineAlignmentProperty, BaselineAlignment.Superscript); //上标
textrange.ApplyPropertyValue(Run.BaselineAlignmentProperty, BaselineAlignment.Subscript); //下标

上下标的设置没有问题,显示也没有问题,但当把RichTextBox中的内容存取时,问题出现了:
1. 保存的rtf格式中上下标信息丢失;
2. 对RichTextBox的文本信息进行右键复制,粘贴到word中,上下标信息丢失

相关代码如下:

    public static class Extend
    {
        public static string GetText(this RichTextBox rtb, string dataformat)
        {
            if (null == rtb)
                return "";

            var range = new TextRange(rtb.Document.ContentStart, rtb.Document.ContentEnd);
            using (var ms = new MemoryStream())
            {
                range.Save(ms, dataformat);
                ms.Seek(0, SeekOrigin.Begin);
                using (var sr = new StreamReader(ms))
                    return sr.ReadToEnd();
            }
        }

        public 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值